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 를 상속하고, 사용한다면 문제가 생길까?
'개인 공부' 카테고리의 다른 글
BLE 통신 ( 저전력 블루투스 ) (0) | 2022.09.14 |
---|---|
CI ( Continuous Integration ) (0) | 2022.03.26 |
의존성 주입 (DI, Dependency Injection ) / Dagger2 (0) | 2021.12.18 |
React Native 하면서 궁금했던거. (0) | 2021.08.08 |
여러가지 기타등등.. (0) | 2021.02.15 |