Data
🔴 서버에서 가져온 데이터 JSON

🔴 사용할 데이터 String

🔴 UtcTimeModel

MVC



MVVM
🟠 서버로 부터 온 데이터 Entity

🟠 Entity를 가져오는 Repository
서버로 부터 온 데이터(Entity)인 UtcTimModel을 전달

🟠 Repository를 사용하는 Service
서버모델(Entity)을 로직에서 사용하는 Model로 바꿔줌
필요없는 것 다 빼고 Entity에서 필요한 것만 뽑아서 Model로 변형

🟠 이 앱에서 사용하는 Model
서버에서는 JSON의 String으로 왔지만,
Service에서는 Date타입으로 가지고 있음

🟠 ViewModel
화면에서 보여줘야될 값은 String 하나임
Logic에서는 Date 타입으로 뭔가를 처리하지만,
ViewModel 에서는 String값이 필요함
Service를 사용해서 가져온 값을 화면에서 보여줄수있는 형태로 변형

🟠 화면을 보여주는 View ViewController
화면에 보여질 모든 데이터 형태가 ViewModel에 있기때문에
ViewModel만 바라보면서 데이터가 변경이 되면 그걸 가지고 화면에 세팅하는 처리만 하면 됨
어떤 이벤트가 발생하면 이벤트를 ViewModel에게 넘기면서 이벤트에 대한 적절한 값변경을 요청
여기서 ViewModel은 이벤트에 대한 적절한 값변경을 일으키는데..
그 로직은 뷰모델에서 하는 것이 아니라 Service에서 일어남..
서비스는 이 앱의 핵심 비즈니스 로직이기 때문..

RxSwift 로 변형


Rx는 콜백을 받기 위해서 사용한 것 뿐
MVVM
View는 ViewModel에 의존
ViewModel은 Data를 바꾸기만 함
바꾼 Data를 그려내는 것은 View가 알아서 해! (계속 모니터링하다가 Data가 바뀌면 알아서 바꿔라)
바뀐 시점을 알려주는 것은 onUpdated 같은 콜백이나 RxSwift 같은 툴을 써서 리액티브하게 만들면 됨
MVVM에서 가장 중요한 것은 ⭐️ 의존관계를 어떻게 가지고 있느냐! ⭐️
Model은 3가지 종류가 있음
원천 데이터: Entity
원천 데이터로부터 서비스 로직에서 사용되는 근본 데이터: Model
근본 데이터를 화면에 보여지게 하는 데이터: ViewModel
그것을 처리하는 로직을 담당하는게 Service, Repository

MVP
ViewModel이 View야 너가 이걸 그려라 화살표의 방향이 일관성이 깨짐

MVC

출처:
GitHub - iamchiwon/mvvm_final: MVVM 종결 예제
[SUB] 도대체 어떻게 하는 것이 MVVM 인것이냐? 오늘 결론 내립니다.