MVP
우리가 보통 그냥 심심한데 개발 좀 해볼까? 할 때 하는 개발은 주로 MVC로 구현하기 때문에 MVC에 적응되어 있을 텐데 오늘은 조금 생소한 MVP를 알아보도록 하겠습니다.
MVP란?
MVP, 즉 Model-View-Presenter는 소프트웨어 디자인 패턴 중 하나로, 사용자 인터페이스 관련 구조를 효과적으로 관리하는 데 중점을 둡니다. 이 패턴은 전통적인 MVC 패턴을 변형하여, 애플리케이션의 사용자 인터페이스를 Model, View, 그리고 Presenter 세 가지 주요 구성 요소로 나눕니다.
이 구분은 각 컴포넌트의 역할을 명확하게 하여, 시스템 전체의 유지보수와 확장성을 개선합니다. Model은 데이터와 비즈니스 로직을 관리하며, View는 사용자에게 정보를 표시하는 역할만을 담당합니다. 이와 별도로, Presenter는 Model과 View 사이의 상호작용을 조정합니다. Presenter는 View에 표시될 데이터를 Model로부터 가져와 가공하고, 사용자의 입력에 따라 Model을 업데이트하며 View에 반영합니다.
MVP 패턴의 핵심 이점은 각 컴포넌트가 서로의 구현 세부사항으로부터 독립적이라는 점입니다. 이로 인해 View와 Model 사이에 직접적인 통신이 없어짐으로써, 테스트와 유지보수가 훨씬 간편해집니다. 각 부분을 독립적으로 테스트할 수 있으므로, 버그를 쉽게 식별하고 수정할 수 있으며, 애플리케이션의 다양한 부분을 개별적으로 개선할 수 있습니다. 따라서, MVP는 특히 대규모 애플리케이션 개발에 적합한 패턴으로 평가받고 있습니다.
MVP의 지켜야할 규칙
ViewController는 사용자로부터의 입력을 처리하는 인터페이스로서의 역할에 집중합니다. 사용자가 버튼을 클릭하거나 다른 형태의 입력을 제공할 때, 이러한 행동들은 Presenter에 의해 처리됩니다. Presenter는 필요한 로직을 수행한 후, 그 결과를 ViewController에 반환하여 사용자 인터페이스를 업데이트합니다. 이 과정에서 ViewController는 어떤 버튼이나 사용자 트리거도 직접 처리하지 않으며, 이 모든 처리는 Presenter에 의해 이루어집니다.
Model은 데이터 관리를 전담합니다. 데이터의 수정, 추가 또는 삭제 등의 작업은 모두 Model에서 처리되며, 이 데이터는 Presenter를 통해 다른 컴포넌트와 상호작용합니다. Model은 직접적으로 ViewController와 통신하지 않으며, 모든 데이터 흐름은 Presenter를 경유합니다.
Presenter는 중간 관리자로서의 역할을 수행합니다. 이는 API 요청과 같은 외부 데이터 소스와의 통신을 포함하여 필요한 데이터를 수신하고 처리합니다. 처리된 데이터는 적절한 시점에 Model 또는 ViewController에 전달되어 애플리케이션의 흐름을 조정하고, 사용자 인터페이스의 변경사항을 적용합니다.
마지막으로, ViewController는 사용자 인터페이스의 구성 및 수정을 담당합니다. 이 역할에는 View의 업데이트, 설정 변경, 새로운 View 요소의 추가 등이 포함됩니다. 이러한 작업을 통해 사용자 경험을 최적화하고, 애플리케이션의 시각적 요소를 관리합니다.