2009-04-02 5 views

답변

1

보기에 대한 방법입니다. 예를 들어, ShowCustomerForm()과 같은 추상적 인 메서드가 있고 WinForms의 구현은 CustomerForm.Show (또는 WinForms의 모든 것)와 WebForms에서는 Response.Redirict (CustomerForm.aspx)가됩니다.

+0

보기가 ICustomerForm 인터페이스의 인스턴스를 만든 후에 다음과 같은 일부 메서드를 사용하여 표현자를 전달할 수 있습니다. Init (CustomerFormPresenter) – dzendras

3

예를 들어, 일부의 네비게이터 인터페이스를 사용하여 :

interface INavigator 
{ 
    void MoveTo (string screenName); 
    void MoveTo (string screenName, NavigationParameters parameters); 
} 

각 발표자 다음 생성자에 전달이 네비게이터의 인스턴스를 가질 것이다. 이렇게하면 내비게이션이 발표자와 개별보기에서 분리됩니다.

구성에 정의 된 실제 Form 클래스와 화면 이름 간의 매핑을 가질 수 있습니다.

1

고유 한 MVP 쌍이있는 다른 화면을 의미한다고 생각합니까?

오늘 아침에 그 케이스에 대해 생각해 보았습니다. 내 솔루션은 코디네이터가 발표자와 MVP 쌍을 열어야한다는 것을 알고있을 것입니다. 새 발표자 +보기가 열리고 완료되면 선택적으로 첫 번째 발표자의 메서드가 결과와 함께 호출됩니다.

그런 식으로 첫 번째 MVP는 새 화면에 대해 알 필요가 없으며 이벤트 만 발생시킵니다. 두 번째 창을 열고 다시 통신하기위한 논리는 코디네이터에 완전히 포함되어 있습니다.

0

Lennaert가 코디네이터 (워크 플로우 컨트롤러라고 부름)를 사용하여이 작업을 수행합니다. Java 웹 개발에서 왔고 그 아이디어는 ApplicactionController의 한 형태였습니다. 이 문제가 생겼고 workflowcontroller가 명령을 실행합니다. 각 명령은 워크 플로 또는 일련의 관련 단계를 나타냅니다 (따라서 workflowcontroller라는 이름). flowcontroller는 명령 간 탐색을 처리하고 flowcontroller는 단계 사이를 탐색하는 탐색기를 가지고 있습니다. 각 단계에는 발표자가 연결되는 완료 이벤트와 다음 단계로 이동하는 데 사용하는 NextStep 메서드가 있습니다. 우리의 worflowcontroller는 메뉴에 밀접하게 연결되어 있으므로 다른 워크 플로우 사이를 이동할 수 있습니다. 단계는 뷰와 발표자 사이의 링크를 설정합니다. 우리는 어떤 구성도 가지고 있지 않으며 NextStep이라는 메소드로 실행하기위한 다음 단계를 설정하는 로직을 내장하고 있습니다. 그것은 생산에 있지만, 나는 이것에 대해별로 만족하지 않습니다. 여기에 들어가기에는 너무 자세하지. 나는 이벤트 중심으로 움직이는 것에 대해 생각해 봤다. 우리는 메시지 버스를 사용하여 다른 모든 의사 소통을하고 있으며이를 사용하여 화면 사이를 이동합니다. 그게 도움이되는지 아닌지 나는 모른다. 대부분의 화면은 순차 워크 플로우로 구성됩니다.

관련 문제