(안드로이드) 안드로이드 아키텍처 패턴

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 패턴을 쉽게 구성할 수 있습니다.