모델-뷰-프레젠터

Model–view–presenter
Model View Present(MVP; 모델 뷰 프레젠터)의 GUI 설계 패턴을 나타내는 다이어그램.

Model-View-Presenter(MVP; 모델 뷰 프레젠터)Model-View-Controller(MVC; 모델 컨트롤러) 아키텍처 패턴에서 파생된 것으로 주로 사용자 인터페이스 구축에 사용됩니다.

MVP에서 발표자는 "중간자"의 기능을 맡는다.MVP에서는 모든 프레젠테이션 로직이 [1]발표자에게 푸시됩니다.

역사

모델 뷰 프레젠터 소프트웨어 패턴은 1990년대 초 Apple, IBMHewlett-Packard[2]합작회사Taligent에서 시작되었습니다.MVP는 Taligent의 C++ 기반 CommonPoint 환경에서 애플리케이션 개발을 위한 기본 프로그래밍 모델입니다.이 패턴은 나중에 Taligent에 의해 Java로 이행되어 Taligent CTO Mike [3]Potel의 논문에서 널리 보급되었습니다.

1998년 Taligent가 중단된 후, Smalltalk의 Andy Bower와 Blair McGlashan은 Smalltalk 사용자 인터페이스 프레임워크의 기반을 [4]형성하기 위해 MVP 패턴을 채택했습니다.2006년, Microsoft 는, 의 유저 인터페이스 프로그래밍의 메뉴얼과 예에 MVP 를 짜넣기 시작했습니다.NET [5][6]프레임워크

MVC와 같은 다른 설계 패턴에 대한 MVP의 관계를 포함한 MVP 패턴의 진화와 다중 변형은 Martin[7] Fowler와 Derek Greer의 [8]기사에서 자세히 논의된다.

개요

MVP는 자동 유닛 테스트를 용이하게 하고 프레젠테이션 로직에서 문제를 분리하도록 설계된 사용자 인터페이스 아키텍처 패턴입니다.

  • 모델은 사용자 인터페이스에서 표시되거나 다른 방법으로 동작할 데이터를 정의하는 인터페이스입니다.
  • 는 패시브인터페이스로 데이터(모델)를 표시하고 사용자 명령(이벤트)을 발표자에게 라우팅하여 해당 데이터에 대응합니다.
  • 발표자는 모델과 뷰에 따라 행동합니다.리포지토리(모델)에서 데이터를 검색하여 보기에 표시할 수 있도록 형식을 지정합니다.

일반적으로 뷰 구현은 구체적인 발표자 객체를 인스턴스화하여 그 자체에 대한 참조를 제공합니다.다음 C# 코드는 단순한 뷰 컨스트럭터를 나타냅니다.ConcreteDomainPresenterIDomainPresenter 인터페이스를 구현합니다.

일반의 학급 도메인 뷰 : IDomain 표시 {     사적인 IDomain Presenter _domainPresenter = 무효;      // <요약> 컨스트럭터.</filters>     일반의 도메인 뷰()     {         _domainPresenter = 신규 Concrete Domain Presenter(이것.);     } } 

뷰에서 허용되는 논리의 정도는 구현마다 다릅니다.극단적으로, 뷰는 완전히 수동적이며, 모든 상호 작용 작업을 발표자에게 전달합니다.이 공식에서는 사용자가 뷰의 이벤트 메서드를 트리거하면 파라미터와 반환값이 없는 발표자의 메서드만 호출됩니다.그런 다음 발표자는 뷰 인터페이스에서 정의된 메서드를 통해 뷰에서 데이터를 가져옵니다.마지막으로 발표자는 모델을 조작하고 조작 결과에 따라 뷰를 갱신한다.다른 버전의 model-view-presenter에서는 어떤 클래스가 특정 상호작용, 이벤트 또는 명령을 처리하는지에 대해 일부 관용도를 허용합니다.이것은 클라이언트의 브라우저에서 실행되는 뷰가 특정 상호작용 또는 명령을 처리하는 최적의 장소인 웹 기반 아키텍처에 더 적합합니다.

계층화 관점에서 프레젠터 클래스는 다층 아키텍처 시스템의 애플리케이션 계층에 속하는 것으로 간주될 수 있지만 애플리케이션 계층과 사용자 인터페이스 계층 사이의 자체 프레젠터 계층으로 간주될 수도 있습니다.

실장

.그물

.NET 환경은 다른 개발 환경과 마찬가지로 MVP 패턴을 지원합니다.ASP의 여러 인터페이스를 지원하기 위해 동일한 모델과 프레젠터 클래스를 사용할 수 있습니다.NET 웹 응용 프로그램, Windows Forms 응용 프로그램 또는 Silverlight 응용 프로그램.발표자는 인터페이스(뷰) 컴포넌트에서 액세스할 수 있는 인터페이스를 통해 뷰와의 정보를 가져오고 설정합니다.

패턴을 수동으로 구현하는 것 외에 모델 뷰 프레젠터 프레임워크를 사용하여 보다 자동화된 방식으로 MVP 패턴을 지원할 수 있습니다.

자바

자바(AWT/Swing/S)WT) 어플리케이션에서는 사용자 인터페이스 클래스가 뷰 인터페이스를 구현하도록 함으로써 MVP 패턴을 사용할 수 있습니다.

최신 Java 컴포넌트 기반 웹 프레임워크는 씩 클라이언트와 동일한 컴포넌트 접근 방식을 사용하여 클라이언트 측 로직을 개발할 수 있으므로 Java 웹 기반 응용 프로그램에도 동일한 접근 방식을 사용할 수 있습니다.

Google Web Toolkit에서 MVP를 구현하려면 일부 구성 요소만 View 인터페이스를 구현하면 됩니다.Vaadin 또는 Echo2 Web 프레임워크를 사용하여 동일한 접근 방식을 사용할 수 있습니다.

Java 프레임워크에는 다음이 포함됩니다.

PHP

PHP의 유연한 런타임 환경에서는 애플리케이션 로직 접근의 가능성이 매우 높습니다.모델 레이어의 실장은 엔드 애플리케이션프로그래머에 남습니다.

PHP 프레임워크에는 다음이 포함됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "GWT Project". developers.google.com.
  2. ^ 조사 필요 - 이 모델은 ERP 분야(Lawson Software Inc.)에서 훨씬 전에 사용되었습니다.
  3. ^ "MVP: 모델-뷰-프레젠터.C++ 및 Java용 Taligent 프로그래밍 모델입니다."마이크 포텔
  4. ^ "삼합회를 비틀고 있다.Dolphin Smalltalk MVP 어플리케이션 프레임워크의 진화.앤디 바우어, 블레어 맥글래샨
  5. ^ "MSDN Magazine Issues". msdn.microsoft.com.
  6. ^ "The Model-View-Presenter (MVP) Pattern". msdn.microsoft.com.
  7. ^ "GUI 아키텍처" Martin Fowler
  8. ^ "Interactive Application Architecture Patterns". www.aspiringcraftsman.com.

외부 링크