📚 CS/그 외

[CS] 디자인 패턴 (2) - MVP

수댕ʕت̫͡ʔ 2024. 6. 7. 15:20

오늘은 MVP패턴에 대해서 알아보자.

 

MVP 패턴이란?

Model, View, Presenter로 이루어진 디자인 패턴으로 MVC 패턴과 약간의 차이가 존재한다. 하지만 MVC 패턴과 마찬가지로 어플리케이션의 구조를 정의해서 유지보수를 향상시키고 코드의 재사용성을 높인다.

1. MVP 패턴의 구조

-> Model + View + Presenter로 구성

2. MVC 패턴과 차이점

 

1) Model : MVC 패턴은 Model이 View와 Controller에게 직접 변경 사항을 알릴수 있지만, MVP 패턴은 Model이 Presenter에게 변경 사항을 알리면, Presenter는 View를 업데이트합니다.

 

2) View : MVC 패턴은 View와 Controller가 강하게 결합되어있다. View는 사용자 입력을 Controller에 전달하고, Controller는 이를 처리해서 Model을 업데이트한다. 그리고 Model이 변경되면 View는 이를 반영한다. 반면에, MVP 패턴은 View와 Presenter가 강하게 결합되어있다. View는 사용자 입력을 Presenter에 전달하고, Presenter는 이를 처리해서 View를 업데이트한다.

 

3) Presenter : View와 Model 사이의 중재자 역할을 한다. View에서 사용자 입력을 받아 Model을 업데이트하고, Model의 변경 사항을 View에 반영한다.

 

3. MVP 패턴의 상호작용

1. View : 사용자 인터페이스와 상호작용한다. 입력을 Presenter에게 전달한다.

2. Presenter : 입력을 처리하고, Model을 업데이트한다. Model의 변경 사항을 받아서 View를 업데이트한다.

3. Model : 데이터와 비즈니스 로직을 관리한다. 상태가 변경되면 Presenter에게 알린다.

 

4. 장점과 단점

 

<장점>

 

1. View와 Model의 의존성 : View와 Model의 의존성 문제를 해결한다.

2. 명확한 역할 분리 : Model, View, Presenter의 역할이 명확하게 분리되어 독립적으로 개발하고 유지보수할 수 있다. 코드가 더 구조적이고, 이해하기 쉬워진다.

3. 테스트 용이성 : 유닛 테스트가 용이하다.

4. 유연한 사용자 인터페이스 : View는 Presenter와만 상호작용하기 때문에 다양한 View를 쉽게 교체하거나 확장할 수 있다. UI와 비즈니스 로직이 완전히 분리되어 있어, UI 변경이 비즈니스 로직에 영향을 미치지 않는다.

5. 유지보수성 : 각 컴포넌트가 독립적으로 동작하므로, 유지보수에 좋다. 

 

<단점>

 

1. 복잡성 증가 : 작은 어플리케이션의 경우, 과도하게 복잡해질 수 있다. 또한 코드가 길어질 수 있다.

2. View와 Presenter 간의 강한 의존성 : View와 Presenter는 1:1 관계를 가지므로 의존성이 높다는 단점이 존재한다. View가 많아질수록 Presenter도 증가한다.