2009-12-15 4 views
6

MVP의 모델이 정확히 무엇인지 생각할 수 없습니다.모델 뷰 프레젠터 (MVP) 모델이란 무엇입니까?

프리젠 테이션/애플리케이션/도메인/인프라 구조가 있다면 모델은 무엇입니까?

  1. 하위 레이어를 통해 액세스되는 DOMAIN 객체는 무엇입니까?
  2. PRESENTATION 레이어에 정의 된 별도의 객체로, UI에 매핑되고 하위 레이어에서 가져온 데이터를 사용합니까?

누군가 내 모델을 이해할 수 있다면 크게 환영 할 것입니다.

+1

Shhhh ... 큰 소리로 말할 필요가 없습니다. –

답변

6

모델은 일반적으로 응용 프로그램이 작동하는 핵심 도메인 (비즈니스 또는 기타)을 나타내는 클래스/유형/구성 요소 그룹입니다. 이들은 종종 비즈니스 규칙의 형태로 필요한 핵심 로직을 수행하고 데이터를 소비/조작하는 클래스입니다.

계층화 된 예제에서 모델은 주로 도메인 계층에 있지만 응용 프로그램 계층에도있을 수 있습니다.

두 개의 개별적인 아키텍처 패턴 또는 애플리케이션을 보는 방법이 n 계층/n 계층 대 MVP 인 경우이를 이해하는 데 어려움이 있다고 생각합니다.

동시에 모델/뷰 접근법을 사용하는 동시에 응용 프로그램에서 레이어를 적용하는 것은 매우 합리적입니다.

둘 중 하나에 익숙해지면 처음부터 한 번에 하나씩 집중하여 오버레이해야 할 수 있습니다.

+0

이 두 아키텍처 패턴이 구별되며 결합되어서는 안된다고 말하고 있습니까? – David

+1

모델은 모두 데이터에 관한 것입니다. 포함 된 논리는 데이터와 무결성과 관련이 있습니다. 뷰 또는 컨트롤러 로직 (모델 내용을 표시하는 방법 또는 사용자 입력에 따라 어떤 모델을 뷰에 표시해야하는지)을 포함하면 안됩니다. – Will

+0

@David, 아니, 솔직히 말해서 나는 더 일반적인 MVC에 대한 오해 된 MVP를 가지고있다. MVP는 내가 아는 한 UI에 관한 것입니다. 나는 실제로 이러한 다양한 패턴의 모델을 재사용하는 것을 발견한다. 가장 널리 합의 된 모델의 경우 Martin Fowler의 Enterpise Applkication Architecture 패턴을 살펴보아야합니다. – Ash

4

Model-View- * 아키텍처에서 모델은 애플리케이션의 데이터를 설명하는 것으로, 필요에 따라 뷰에 전달할 수도 있습니다.

응용 프로그램에 이미 도메인 개체가있는 경우 모델에 해당 개체를 사용할 수있는 경우가 있습니다.

+0

저스틴 그들이 필요에 맞으면 무엇을 의미합니까? – David

+0

"필요에 맞게"나는 당신이 당신의 견해에서 렌더링 할 필요가있는 데이터를 표현한다면 의미한다. 그렇지 않다면, 뷰 모델을 사용하여 문제를 쉽게 해결할 수 있습니다 ... 뷰에서 렌더링 할 데이터를 표현하기위한 모델입니다. –

+0

누가 이러한 뷰 모델을 생성 할 책임이 있습니까? 보기 모델은 화면 DTO라고하는 것과 동일합니까? – David

1

데이터입니다. 이는 DataSets의 데이터베이스에서 가져온 데이터 일 수도 있고 비즈니스 분야를 나타내는 개체가 포함 된 완전한 도메인 모델 일 수도 있습니다.

보기은 웹 페이지이든 Windows 응용 프로그램이든 모바일 장치 응용 프로그램이든 관계없이 UI입니다.

발표자은 전체 복장의 두뇌와 두뇌 사이의 접착제입니다. 보기에 의해 시작된 작업은 발표자에서 진행됩니다. 일반적으로 WinForms 응용 프로그램에서, 예를 들어, 내 View의 Button.Click 이벤트는 Presenter에서 메서드를 호출하기 만하면 필요한 모든 액션을 취합니다 (그리고 View에서 다시 뭔가를 수행 할 수도 있음).

발표자는 (인터페이스를 통해)보기 및 모델에 대한 참조를 보유합니다. 보기에는 발표자에 대한 참조가 있습니다 (대개 강하게 입력하지만 인터페이스 일 수도 있음). 모델은 발표자 또는보기에 대해 알지 못합니다.

+0

그러면 예를 들어 모델의 상태를 둘러싼 일부 논리에 따라 버튼이 활성화/비활성화 된 경우를 나타내는 발표자입니까 – David

+0

일반적으로 예. 저는 발표자 또는 모델과 아무런 관련이없는 두 개의 상호 의존적 인 부분이있는 상황에서 모든 것을 일을하는 것이 아닙니다. 나는 그것에 대한 가장 좋은 규칙은 완성 된 것이 * 모든 UI (이 경우 발표자로부터 완료되어야 함)에서 수행되어야하는지 아니면 UI의 특정 유형에만 해당되는지 여부입니다. WPF가 아닌 WinForms에서 수행 할 작업). –

2

다음 아키텍처 지침이 중요하지 않아도 M은 항상 동일한 것입니다. 모델은 도메인과 관련된 부분입니다. 실제로 응용 프로그램이하려고하는 부분입니다. 모델은 비즈니스 도메인을 나타내야합니다. MVP, MVC, MVVM 등이 해당됩니다.

인벤토리 시스템을 만드는 경우 인벤토리 클래스가 모델에있을 가능성이 높고 제품이 주문에있을 가능성이 큽니다. 이것들은 도메인 논리를 구성하는 것들입니다.