블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday

'Model-View-Presenter'에 해당되는 글 1건

  1. 2011.10.25 MVP(Model-View-Presenter) Pattern 2




 오랜만에 윈폼(WinForm)프로젝트를 하면서, 사용한 설계패턴이다. MVP(Model-View-Presenter) 패턴이 생소 했는데, 익숙해 지니깐 여러므로 편하고, 관리하기 쉬웠다. 그럼 MVP 패턴에 대해 간단하게 정리 하도록 하겠다. 


 MVP 패턴은 1990년대 초기에 등장한 패턴으로 마이크로소프트가 사용해 가장 많이 알려진 패턴으로, 이 패턴은 MVC(Model-View-Controller)패턴을 기반을 둔 GUI(Graphical User Interface)를 만들기 위한 설계패턴이다. 즉, MVC 패턴의 여러 패턴 중 하나이다.
( 참고 : MVC 패턴은 너무나 잘 알려진 설계패턴으로 1979년에 제록스 팰러앨토 연구소에서 스몰토크 관련 일을 하던 Trygve Reenskaug에 의해 처음 설명되었으며, 아직까지도 가광을 받고 있는 패턴이다.)

 MVP 패턴은 View와 Model 간의 결합도를 낮추는데 있으며, Presenter는 Model의 데이터를 View에 출력할 수 있도록 할 뿐만 아니라, 이벤트(Event)를 View에서 받아 Model의 데이터를 갱신하도록 한다. 실제 구현에서는 Presenter는 View와의 결합도를 감소 시키기 위해서, Interface를 참조한다. 이를 통해 Presenter는 View의 실제 UI요소가 어떻게 구현되는지에 관계없이 데이터를 올바르게 표현 하도록 하는 것 이다. 아래 그림을 참고하면 이해가 쉬울 것이다.


 View  View Interface의 Display 맴버(Properties, Display Methods)를 구현하여 실제적인 UI요소를 그려준다.
 View Interface  Presenter에서 Concrete View를 지접 참조하지 않고 View Interface를 참조함으로써 Concrete View와의 커플링을 감소시키고, View의 실제 UI 요소가 어떻게 구현되는지 몰라도 데이터를 올바르게 표현할 수 있도록 해준다.
 Presenter  View와 Model간의 상호작용을 담당하며, Model의 데이터를 View Interface를 통해 Concrete View에 출력(바인딩)해주고, 사용자의 이벤트를 View에서 구독하여(실제적인 이벤트 핸들러 구현) Model의 데이터를 갱신하는 역할을 수행한다. Presenter를 통해 View와 Model간의 의존관계를 없앨 수 있다.
 Model  데이터와 상태를 유지하며, 데이터 처리 로직을 포함한다.

예제 코드는 첨부된 파일을 확인하면 되겠다.


위 그림은 샘플프로젝트의 구성인데, 크게 MultiLayer폴더와 SingleLayer폴더가 보일 것 이다. 이는 MVP 패턴을 멀티/싱로 해서 두개의 샘플을 구성한 것이다. 그리니 스타트 프로젝트를 happydong.SingleLayer.MVP 또는 happydong.MVP.View로 잡아서 실행 시켜보면 될 것이다.

Posted by happydong
, |