[Android] 아키텍처 패턴 (Architecture Pattern), MVC ?

hyooosong·2022년 1월 17일
0
post-thumbnail

Architecture Pattern ?

  • 소프트웨어에서 발생하는 문제들을 해결하기 위한 방법

일반 아키텍처 원칙

Android 앱은 크기가 커지기 때문에, 앱을 확장하고 앱의 견고성을 높이며 앱을 더 쉽게 테스트할 수 있도록 아키텍처를 정의하는 것이 중요합니다.

  • 관심사 분리 (Separation of concerns)
  1. UI 기반 클래스는 UI 및 운영체제 상호작용을 처리하는 로직만 포함해야 합니다.
  2. UI 기반 클래스를 최대한 가볍게 유지하여 LifeCycle과 관련된 많은 문제를 피하고, 테스트 가능성을 개선할 수 있습니다.
  • 데이터 모델에서 UI 도출하기(Drive UI from data models)
  1. 데이터 모델, 즉 앱의 데이터 나타냅니다.
  2. 앱의 UI 요소 및 기타 구성요소와 독립되어 있습니다.
  3. 앱 아키텍처를 데이터 모델 클래스에 기반하는 경우 앱의 테스트 가능성과 견고성이 더 높아집니다.

MVC 패턴

Model, View, Controller

모든 입력은 Controller 에서 발생하고 관리함
프로그래밍 시 가장 널리 사용되는 구조 중 하나

  • Model
    - 데이터를 가짐
    - 애플리케이션에서 사용되는 데이터와 이를 처리함
  • View
    - 사용자에게 보일 화면을 표현함
  • Controller
    - 사용자로부터 입력을 받고, 이를 모델에 의해 View를 정의함
    - 모델의 데이터 변화에 따라 뷰를 정의함

사용자 Action 순서

  1. Controller : 사용자 이벤트 발생
  2. Controller : 이벤트에 따른 갱신이 필요한지 Model 확인
  3. Model : 데이터 갱신이 필요하면 이벤트 발생
  4. View : Model 또는 Controller 로부터 갱신 필요 여부 이벤트를 받음
  5. View : Model에서 실제 필요한 데이터를 받아와 View 갱신

안드로이드에서의 MVC는?

-> View, Controller가 Activity & Fragment 와 같은 View에 포함됨
(ex. setOnClickListener 등과 같은 이벤트)

  1. Activity : 사용자 이벤트 발생
  2. Model로부터 데이터 갱신 필요 여부 확인
  3. Model로부터 전달받은 데이터를 통해 View 갱신 여부 판단
  4. View에서 UI 갱신 처리

MVC 패턴의 패키징 예시

📂com.example.MVC
┣ 📂db
┣ 📂network
┣ 📂ui
┃ ┣ 📂main
┃ ┣ 📂search
┃ ┣ 📂review
┗ 📂utils

  • Model : DB, API, SharedPreference, ~~Model(Data)
    데이터 파일과 데이터 처리 관련 로직
  • View & Controller : Activity, Fragment 등 UI 로직

--> 사용자의 입력 + 뷰의 갱신 변화데이터 처리 의 분리


MVC 패턴의 장단점

장점
- 개발 기간이 짧음

단점
- 코드 양의 증가
- 복잡도 증가
- 유지보수 어려움
- 테스트 코드 작성 어려움
- View와 Model의 결합도가 높음
(View에서 Model을 직접 호출하여 사용하기 때문)


Example

MovieReview Example with Naver API - hyooosong github


Reference

Android MVP 무작정 따라하기 - MVC 구조 이해하기 |
안드로이드 아키텍처 패턴 - MVC가 뭘까?
developer.android.com - 앱 아키텍처 가이드

0개의 댓글