새소식

기타/디자인패턴

[디자인 패턴]MVP

  • -

[출처] https://unity.com/kr/resources/level-up-your-code-with-game-programming-patterns

 

Level up your programming with game programming patterns

Our new e-book explains well-known design patterns and shares practical examples for using them in your Unity project.

unity.com

 

 

 


M(Model) : 데이터 값을 보유하는 컨테이너 역할. 로직, 계산을 수행하지 않음
V(View) : 인터페이스에 해당하며, 데이터를 화면에 표시하는 역할
C(Controller) : 런타임 시 게임 데이터 처리와 값의 변경을 계산하는 역할

각 파트에서 기능을 제한하면서 일을 처리, 단일 책임의 원칙의 개념



 

 

 

 

 

 

MVC의 변형인 MVP
모델 데이터 변경 사항 수신을 위해 View 관련 코드가 필요했다. Controller 부분을 Presenter로 변경

Presenter : 두 레이어의 중개자 | 모델에서 데이터 검색 후 View에 표시하기 위해 형식을 지정. View를 통해 들어온 입력을 토대로 모델을 조작한다. 변경된 모델의 상태를 View에 전달.

View : 그래픽, 입력 | 입력을 처리하도록 변경, Presenter에게 입력값 전달과 변경된 사항을 받아들여 View 업데이트

Model : 데이터 | Presenter로 부터 들어온 메세지를 통해 상태변경. 상태 변경이 완료될 시 Presenter에게 알림.

 

 

 

 

 


 

 

 

ClickDamage 버튼. 사용자의 입력이 있을 경우 입력을 입력을 전달한다.
HealthPresenter 중개자. 사용자의 입력에 따라 리셋, 데미지 등의 명령을 Health 모델로 전달
Health Model에서 변경된 내용을 전달받아 View에 전달
View UI. 입력과 변경내용을 받아 사용자에게 노출

 

 


 


모델 변경사항을 바로 View에 표시하는 것이 아닌 중개자를 통해 저장된  Action을 통해 저장된 View 변경을 실행
View에서 모델로 가기 위한 중개자가 존재.

 

HealthPresenter

 

 

Health Model

 

 

View 입력 받기

 

 


장점
-대규모 프로젝트 시 View Presenter의 분리로 유지보수의 용이
-사용자 인터페이스와 게임플레이 로직의 분리로 인한 단순화
-클래스의 분리와 세분화로 가독성 향상과 유지보수의 용이성


주의 사항
-앞선 디자인 패턴보다 큰 아키텍쳐 패턴이기에 클래스에 대한 책임과 계획이 필요
-해당 패턴이 모든 경우에서 유용한 것이 아니다.  데이터, 로직, 인터페이스의 분리로 얻을 수 있는 이점에 대해 고려

'기타 > 디자인패턴' 카테고리의 다른 글

[디자인 패턴]Observe  (0) 2024.05.21
[디자인 패턴] State  (0) 2024.05.21
[디자인 패턴] Command  (0) 2024.05.21
[디자인 패턴] ObjectPool  (0) 2024.05.19
[디자인 패턴] Factory  (0) 2024.05.19
Contents

아핫

땡큐하다