android MVC

Cloud0·2021년 10월 27일
0

이론

목록 보기
5/6
post-thumbnail

MVC 아키텍처란?

  • Model

    • View 또는 Control에 묶이지 않아 재사용 가능함
    • 데이터를 가지며 애플리케이션에서 사용되는 데이터와 그 데이터를 처리함.
  • View

    • 사용자의 화면을 담당
    • 유저가 어떤 입력(Action)을 하든 View는 무엇을 해야 할지 모름
    • 앱 및 UI와의 상호작용에서 컨트롤러와 통신함
  • Controller

    • 비즈니스로직을 담당, 사용자의 이벤트 처리
    • 모델의 데이터 변화에 따라 뷰를 선택함.
    • 사용자로부터 입력을 받고 이 입력을 모델에 의해 View 정의를 하게 됨.

    MVC 아키텍처 패턴의 흐름

  • MVC 흐름

  • 안드로이드에서는 View와 Control이 액티비티(Activity) / 프래그먼트(Fragment) 같은 View에 관련된 녀석들이 모두 가지고 있는경우

MVC의 장점

  • Model과 View의 분리됨.
  • Model의 비종속성으로 재사용 가능함.
  • 구현하기 가장 쉽고 단순함.
  • 유닛테스트에서 View는 테스트 할 부분이 없기 때문에 쉽게 Model만 테스트 가능.
  • 개발기간이 짧아짐. (안드로이드에서의 장점)
    그냥 다른거 생각할것 없이 안드로이드 액티비티에서 모든 걸 다 동작하게 처리만 잘 해주면 개발 기간이 짧아질수도 있다.

MVC의 단점

  • Model과 View사이에 의존성 발생함. (서로간의 의존성 완전히 없앨 수 없음)
    즉, View의 UI 갱신을 위해 Model을 직/간접적으로 참조하므로 앱 자체가 커지고 로직이 복잡해질수록 유지보수가 힘들어집니다.
  • 스파게티 코드가 될 가능성이 높음.
    코드 복사/붙여넣기가 많아지게 되면서 코드 분리조차 되지않으면 코드가 아주 제대로 꼬여버립니다. 그렇기에 복잡도는 증가합니다. 다만, 이는 설계 단계에서 제대로해서 분리를 잘하면 어느정도 해소는 됩니다.
  • 시간이 지날수록 컨트롤러에 많은 코드가 쌓여 코드가 비대화하여 문제 발생 가능
  • Controller가 안드로이드 API에 깊게 종속되므로 유닛 테스트가 어려움.

REFERENCE

profile
이...사...중......

0개의 댓글