개인 공부

MVVM?

Machine_웅 2022. 3. 25. 00:26
728x90
반응형

Model View View Model

1) View model과 View의 관계

ViewModel은 View를 몰라야함...  그말은, context 같은걸 ViewModel에서 가지고 있음 안된다는건가 ?

 

=>

ViewModel 은 Model 을 알지만 View 를 알지 못합니다.

View 는 Model 을 알지 못하나 ViewModel 을 알 수 있습니다.

View 는 ViewModel 을 옵저빙 하고 있다가 상태 변화가 전달되면 화면을 갱신해야 합니다

 

-  viewModel 내의 데이터를 옵저빙 하고 있다가 ?????? view가 감지한다??? 뭔가 의존적인데.

 

=> 하지만 이런 코드는 서로간의 의존적 형태를 지속 시키기 때문에

유지보수성을 높이는데는 한계를 가져올 수 있습니다.

 

- 그렇겠지 view가 계속 viewModel에 있는 데이터에 변화를 감지하려면 독립 없이 계속 의존하게 될거거든..

 

 

=>

닷넷유저들은 MVVM 을 구현하는데 있어서 Databinding 을 필수 기술로 간주하고 있습니다.

Databinding 은 View 와 ViewModel 간의 데이터와 명령을 연결해주는 매개체가 되어

서로의 존재를 명확히 알지 않더라도 다양한 인터랙션을 할 수 있도록 도와줍니다.

 

(Model 에서 데이터 변경되면 ViewModel 을 거쳐서 View 로 전달되도록 하는데

Android 에서는 LiveData 나 RxJava 등을 통해 구현할 수 있습니다.)

 

 

- 그럼 viewModel에서 유효한 값을 주고 View보고 화면이동을 한다던지

View의 고유기능을 써야 하는 경우는 어떻하지?

( 즉. View의 Context를 써야하는 경우는 어째야 하는거냐고 )

 

=>

스텍오버 플로우에서  외국형은

 

 " MVVM의 원칙은 View(액티비티/프래그먼트)만이 ViewModel에 대한 참조를 보유하고

ViewModel은 어떠한 View에 대한 참조도 보유해서는 안 된다는 점을 지적합니다. "

 

라고하는데  그럼 View에서는 얼마든지 ViewModel에 있는데이터를 observe 할수있다는 건가?

만약, AndroidViewModel 를 상속하고, 사용한다면 문제가 생길까?

 

 

 

728x90
반응형