MVC, MVP, MVVM 패턴 등… 검색해보면 디자인 패턴 또는 아키텍처 패턴이라고 합니다.
디자인 패턴
: 소프트웨어 설계에서 흔히 발생하는 문제에 대해 재사용 가능한 솔루션
: 문제를 해결하기 위해 상황에 맞게 사용할 수 있습니다. 솔루션 템플릿수단
: 프로그래머가 애플리케이션이나 시스템을 설계할 때 일반적인 문제를 해결하는 데 사용되는 형식화된 패턴
아키텍처 패턴
: 디자인 패턴과 유사하지만 범위가 더 넓음, 소프트웨어 엔지니어링의 다양한 문제 해결하다
: 일부 아키텍처 패턴은 소프트웨어 프레임워크에서 구현됩니다.
아키텍처 패턴은 시스템의 이미지를 전달하지만 아키텍처 자체를 나타내지는 않습니다.
: 다양한 아키텍처는 동일한 패턴을 구현하고 관련 특성을 공유합니다.할수있다
ex) 제한된 컴퓨터 하드웨어 성능, 비즈니스 위험 최소화 및 고가용성 등
디자인 패턴 VS 아키텍처 패턴
소프트웨어 엔지니어링에서 일반적으로 발생하는 문제를 해결하지만
디자인 패턴 특정 문제를 해결수행하는 방법
건축 패턴 소프트웨어 전반의 문제 해결수행하는 방법
MVC(모델 – 뷰 – 컨트롤러)

모델
: 애플리케이션 데이터를 저장하는 역할
-> SQLite, 룸, 파일, 콘텐츠 제공자
보다
: 화면 구성을 담당하는 영역
제어 장치
: View와 Model이 연결되고 제어되는 영역
-> 액티비티, 서비스, 브로드캐스트 리시버, 프래그먼트
장점
구현하기 쉬운
불리
한 클래스의 코드 양 늘리기
뷰와 모델 간의 종속성 증가
-> 기능 추가나 유지보수가 어려움
MVC 정리
: 간단한 프로젝트에 적합하나 프로젝트 규모가 커지고 메소드가 많아지면 코드를 이해하기 어려워집니다.
즉, 메서드와 클래스를 적절하게 분리하고 복잡성을 관리해야 합니다.
MVP(모델 – 보기 – 발표자)

모델
: 데이터 관련 처리 담당
-> MVC 모델과 동일
보다
: 이벤트가 발생하면 Presenter에게 알리고 반환된 UI로 UI를 업데이트합니다.
증여자
: View에서 전달된 이벤트를 처리하여 다시 View로 반환
: 데이터 요청이 필요한 이벤트가 Model에 들어올 때 -> Model에 요청 후 받은 데이터를 View로 전달
장점
: View와 Model 간의 종속성을 낮출 수 있습니다.
불리
: View와 Presenter가 1:1로 매칭되어 의존도가 높아짐
MVVM(모델 – 뷰 – 모델 보기)

모델
: 데이터 관련 처리 담당
: 데이터가 변경되면 ViewModel을 통해 View로 전달됩니다.
: Android에서는 LiveData, RxJava 등을 통해 구현할 수 있습니다.
보다
: 화면에 표시되는 레이아웃 관리
: View는 Model을 모르기 때문에 View Model을 관찰하다가 state가 변하면 전달된 state를 통해 화면이 업데이트 됩니다.
모델 보기
: 뷰에 연결하기 위한 데이터와 명령어로 구성되며, 상태 변화를 변경 알림으로 뷰에 전달
: View Model은 Model을 알고 있지만 View는 모릅니다.
장점
: 클래스가 커지는 것을 방지하기 위해 UI 컨트롤러의 책임을 분산 -> 유지보수, 재사용, 테스트 등이 용이함.
불리
: View Model 설계가 어렵고 Data Binding 등 추가적인 연구가 필요합니다.
MVVM 정리
: MVVM 모델을 구현하기 위해 데이터 바인딩을 함께 사용하여 종속성을 줄일 수 있습니다.
: 구글에서 제공하는 AAC(Android Architecture Component)를 이용하여 MVVM 패턴을 쉽게 구성할 수 있습니다.