월루를 꿈꾸는 대학생

MVVM 패턴 본문

Programing/플러터

MVVM 패턴

하즈시 2022. 12. 8. 00:31
728x90

 

mvc 패턴의 불편한 점을 개선한 것이 MVP -> MVVM 

점점 발전해 가는 중 

 

어떤 것이 개선 되었는가 ..? 

 

기능별 역할별 분리를 해 서로의 의존성을 최소화 하는 중 

 

MVC

-> View와 Model간의 의존성이 높음 

 

MVVM

 

Model : 데이터와 관련있는 모델 

View Model : View에서 사용되는 모델   --> 컨트롤러랑 비슷? 

 

mvc

- 컨트롤러에서 모델의 갱신을 감지하고 뷰에 갱신 요청을 함 

- 컨트롤러가 뷰랑 모델 둘 다 신경 써야함 

 

MVVM

- 컨트롤러가 뷰를 신경쓰지 않음.. 모델 변경되어도 변경사항만 수정하고 View에 요청 따윈 없음 

 

 


 

 

VIew에 스트림 빌더 사용 

StreamBuilder(
    stream: viewModel.mvvmStream,
    builder: ((context, snapshot) {
      return Text(viewModel.count.toString(),
          style: const TextStyle(fontSize: 150));
    })),

뷰모델이랑 뷰의 연관성이 없어야 함

화면갱신을 뷰로 해야하기 때문에 빌더 사용 

 

뷰 모델에서 모델 받아온 뒤 참조할 거를 정함 

이 변수 count가 뷰에 쓰임 

int get count => _model.counter;

모델  <-> 뷰모델 < - 뷰 

 

보니까 모델을 참조하는 뷰모델을 만듦

모델에서 변경된 (ex 변수명 변경 ) 것들은 뷰모델에서만 변경하면 됨 

어짜피 뷰에서는 뷰모델에 변경된 거를 빌더로 받아서 갱신하기 때문에 참조하는 뷰가 많더라도 뷰모델 하나만 변경하면 되기 때문에 유지보수 간편 

 

이런거 없으면 서버단에서 머하나 변경하면 전체 변수 다 수정해야하니까 불편 그 자체 

 

 

 

 


https://github.com/sudar-life/dev_pattern_sample

 

GitHub - sudar-life/dev_pattern_sample: 플러터에서 mvc 패턴과 mvvm 패턴의 차이를 알아보자.

플러터에서 mvc 패턴과 mvvm 패턴의 차이를 알아보자. Contribute to sudar-life/dev_pattern_sample development by creating an account on GitHub.

github.com

 

728x90