본문 바로가기

MVVM(Model View ViewModel) 패턴 MVVM(Model View ViewModel) 패턴MVVM은 테스트와 모듈화가 쉽고 뷰와 모델을 연결하기 위해 사용해야 하는 연결 코드를 줄일 수 있다는 장점이 있다.Model : 비지니스 로직View : 뷰는 뷰모델에 의해 보여지는 옵저버블 변수와 액션에 유연하게 바인딩된다. View는 VIewModel을 호출하되 결과는 callback/observable로 받는다.ViewModel : Model을 래핑하고 View에 필요한 옵저버블 데이터를 준비합니다. 또한 View가 Model에 이벤트를 전달할 수 있도록 훅(hook)을 준비한다. 그러면서도 뷰모델이 뷰에 종속되지는 않는다.장점 1. 뷰에 대한 의존성이 전혀 없으므로 유닛 테스트가 더 쉬워진다. 2. 앱이 구조적으로 약한 결합 컴포넌트로 나눠진다.. 더보기
MVP(Model View Presenter) 패턴 Model : 비지니스 로직View : UI로직 -> 액티비티/프래그먼트가 이제 뷰의 일부로 간주된다는 것입니다. 따라서 이들이 서로에게 연관되는 자연스러운 현상을 극복할 필요가 없습니다. 액티비티가 뷰 인터페이스를 구현해서 프리젠터가 코드를 만들 인터페이스를 갖도록 하는 것이 좋습니다. 이렇게 하면 특정 뷰와 결합되지 않고 가상 뷰를 구현해서 간단한 유닛 테스트를 실행할 수 있죠.Presenter : 뷰에 연결되는 것이 아니라 그냥 인터페이스라는 점이 다릅니다. 뷰에게 무언가를 표시하는 방법을 지시하는 대신, 표시할 내용만 전달합니다.장점1. 적절한 역할의 분리로 인해 소스 가독성 + 품질 상승2. 테스트 코드 작성이 용이하다.단점 컨트롤러처럼 프리젠터에도 시간이 지남에 따라 추가 비즈니스 로직이 모이.. 더보기
MVC(Model View Controller) 패턴 MVC 패턴 Model에서는 비지니스로직View에서는 UI로직 제공Controller에서는 조립을 담당 어떤 View를 보여줄것인가를 결정해서 Model에서 받은 데이터를 View로 넘겨주고 에러를 어떻게 보여줄것인가를 결정해서 View로 넘겨주는 방식단점 1. 복잡한 비동기처리 , 라이프 사이클 처리가 어렵다. 2. View와 Controller의 분리가 애매하다. -> fat activity, fragment : 액티비티와 프래그먼트에 너무 많은 로직이 들어간다. unit test를 만들기 매우 까다롭다. 더보기