버그 잡이

Android MVP 패턴 간단 정리 본문

카테고리 없음

Android MVP 패턴 간단 정리

버그잡이 2020. 6. 10. 15:10

 

1. MVP패턴이란?

 

하나의 디자인 패턴으로 M(model) / V(View) / P(Presnter) 계층으로 나누어서 개발하는 패턴입니다.

 

가장 큰 특징으로는 view 와 model 을 분리한다는 것입니다.

기존 mvc 패턴은 ativity 클래스 안에 뷰 관련 정보와 데이터 관련 정보를 함께 담아서 클래스가 굉장히 비대해지는 문제가 있었는데요

중간에 컨트롤 타워 역할을 하는 presenter 계층을 추가함으로써 ui정보와 data를 서로 다른 계층에 나누어 관리할 수 있게 되었습니다.

그 결과 ui 관련된 코드는 view 계층에 담기고 data 관련된 코드는 model에 담기게 됩니다.

 

 

 

 

2. 동작 순서로 보는 각 계층의 역할

 

https://medium.com/@bansooknam/android-아키텍처-비교-mvp-mvvm-svc-1-f24e5f338523

 

1) view에서 사용자의 동작을 감지하고 presenter에게 action을 전달합니다.

2) presenter는 action과 관련된 로직을 수행합니다.

3) 로직 처리 과정에서 data가 필요한 경우 model에 요청하여 data를 받아옵니다.(data를 처리만 하고 받아오지 않을수도 있습니다)

4) 로직 수행 결과에 따라 view에게 특정 동작 수행을 명령합니다.

5) View는 presenter의 명령에 따라 결과를 반영하여 보여줍니다.

 

위 동작 과정에서도 알 수 있듯이 presetner라는 컨트롤 타워가 추가됨으로써 view는 수동적인 존재가 됩니다.

 

mvp패턴을 적용한 코드에 분기문과 같은 로직이 view단 코드에 있다면 다시 한번 이 코드의 적합성에 대해서 생각해봐야합니다.

presenter도 마찬가지입니다. presenter는 view에게 명령을 할뿐 ui를 직접적으로 참조하지 않습니다.

 

 

 

 

3. 장점

 

- view와 model을 분리시켜 기존의 높은 결합도로 인한 문제를 예방할 수 있습니다..

- Contract 인터페이스로 각 계층의 요구사항을 정하고 분업하기에 용이합니다.

 

 

 

4. 단점

 

- view와 model을 분리시켰지만 view와 presenter간의 의존성이 생기게 됩니다.

 

(이러한 view와 presenter의 의존성 문제를 해결하고자 MVVM이라는 패턴이 등장하게 됩니다.)

 

 

 

 

 

 

 

 

반응형
Comments