[디자인패턴] MVC, MVP, MVVM

jsieon97·2023년 5월 2일
0

CS지식

목록 보기
1/1

디자인 패턴?

객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴 궁극적으론 유지보수와 개발효율의 증대를 위해 사용한다.

  • 기본적으로 각각의 역할을 나눠 기능들을 만들고 그 기능들로 해야할 일을 한번에 처리해주는 클래스를 만드는 형식
  • 위 같은 설명보다 ~~~ 패턴을 사용하자 제안하는 쪽이 이해가 더 간단하다

주의할 점

  • 디자인 패턴을 맹신하여 모든 문제를 패턴을 써서 해결하려 들지 말 것
  • 디자인 패턴은 모든 방법에 대한 해결책이 아니며 상황에 따라 자주 쓰이는 설꼐 방법을 정리한 코딩 방법론의 일종
  • 디자인 패턴에 얽매이는 것보단 그 패턴이 왜 효율적인이 이해하도록 하자

MVC

Model + View + Controller를 합친 구조
Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
View : 사용자에게 보여지는 UI 부분
Controller : 사용자의 입력을 받고 처리하는 부분

MVC 동작

  1. 사용자의 입력이 Controller로 들어온다.
  2. 입력을 확인하고, Model 업데이트
  3. Controller는 Model을 나타내줄 View 선택
  4. View는 Model을 이용해 화면을 나타낸다.

MVC 특징

  • Controller는 여러개의 View를 선택할 수 있는 1:N 구조
  • Controller는 View를 선택할 뿐 직접 업데이트 하지 않는다. (View는 Controller를 모른다.)

MVC 장점

  • 개발 속도를 병렬적으로 가속화 시킬 수 있다.
  • 여러 개의 뷰를 모델에 빌드할 수 있다. 비즈니스 로직과 데이터가 분리되어 있기 때문에 코드 복제가 제한된다.
  • 변경사항이 전체 모델에 영향을 주지 않는다.
  • 데이터를 어떠한 형태의 가공 없이 리턴한다.

MVC 단점

  • 뷰를 하나 만들면 이에 대응되는 컨트롤러도 만들어야 하나?
  • 뷰가 수정되면 컨트롤러도 수정되어야 하나?
  • 모델 업데이트는 컨트롤러에서 하지 않아도 가능한가?

이러한 단점을 보완하기 위해 나온 것이 MVP 패턴

MVP

Model + View + Presenter를 합친 구조
Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분입니다.
View : 사용자에서 보여지는 UI 부분입니다.
Presenter : View에서 요청한 정보로 Model을 가공하여 View에 전달해 주는 부분입니다. View와 Model을 붙여주는 접착제 역할을 합니다.

MVP 동작

  1. 사용자의 Action들은 View를 통해 들어오게 됩니다.
  2. View는 데이터를 Presenter에 요청합니다.
  3. Presenter는 Model에게 데이터를 요청합니다.
  4. Model은 Presenter에서 요청받은 데이터를 응답합니다.
  5. Presenter는 View에게 데이터를 응답합니다.
  6. View는 Presenter가 응답한 데이터를 이용하여 화면을 나타냅니다.

MVP 특징

  • Presenter는 View와 Model의 인스턴스를 가지고 있어 둘을 연결하는 접착제 역할을 합니다.
  • Presenter와 View는 1:1 관계입니다.

MVP 장점

  • 어플리케이션의 디버깅을 더 쉽게 만든다. MVP는 세 가지의 다른 계층의 추상화를 소개하기 때문이다.
  • 코드 재사용성이 높아진다. 뷰를 컨트롤 하기 위해 여러개의 프레젠터를 가질 수 있다.
  • 더 나은 관심사 분리를 실행할 수 있다. 비즈니스 로직과 영속성 로직을 Activity와 Fragment 클래스에서 분리할 수 있다.

MVC와 MVP의 구조


상기의 흐름은 어떤 이벤트가 외부로부터 들어오고 해당 이벤트로 인해 모델의 데이터를 가져온다는 것을 알 수 있다.

MVVM

Model + View + View Model를 합친 구조
Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분입니다.
View : 사용자에서 보여지는 UI 부분입니다.
View Model : View를 표현하기 위해 만든 View를 위한 Model입니다. View를 나타내 주기 위한 Model이자 View를 나타내기 위한 데이터 처리를 하는 부분입니다.

MVVM 동작

  1. 사용자의 Action들은 View를 통해 들어오게 됩니다.
  2. View에 Action이 들어오면, Command 패턴으로 View Model에 Action을 전달합니다.
  3. View Model은 Model에게 데이터를 요청합니다.
  4. Model은 View Model에게 요청받은 데이터를 응답합니다.
  5. View Model은 응답 받은 데이터를 가공하여 저장합니다.
  6. View는 View Model과 Data Binding하여 화면을 나타냅니다.

MVVM 특징

-MVVM 패턴은 Command 패턴과 Data Binding 두 가지 패턴을 사용하여 구현되었습니다.
-Command 패턴과 Data Binding을 이용하여 View와 View Model 사이의 의존성을 없앴습니다.
-View Model과 View는 1:n 관계입니다.

MVVM 장점

  • 테스트 용이성 : MVVM 아키텍처에서 각각의 모든 코드는 알갱이성(granular)을 유지한다. 적절한 방법으로 구현되었다는 전제 하에, 모든 내부적, 외부적 의존성을 코어 로직을 포함한 코드로부터 유지한다.
  • 확장성 : 늘어나는 코드 알갱이 조각과 분리 경계로 인하여, 동시에 유지보수성을 얻게 된다.
  • MVVM 패턴을 사용하는 가장 주요한 목적은 뷰를 추상화해서 비즈니스 로직 뒤에 있는 코드가 줄어들게 하는 것이다.
  • 로직과 프레젠테이션 계층은 느슨하게 결합된다.
  • 어설픈 UI 자동화 도구 없이 테스트가 가능하다.

MVVM 패턴의 구조


모델이 변경됨으로서 레포지토리도 업데이트 되고 뷰도 업데이트 되고, 데이터의 변화가 UI를 포함하여 서비스의 상태 변화가 된다.

참고

https://enumclass.tistory.com/230
https://brunch.co.kr/@oemilk/113

profile
개발자로써 성장하는 방법

0개의 댓글