문제

나는 View가 내 iview 인터페이스를 구현하는 Winform 인 MVP 프로젝트를 작성했습니다. 나는 코드를 검토하는 과정에 있으며, 코드를 개선하고있는 곳에서 개선하고있는 곳과 발표자가 어떻게 상호 작용하는지에 대해 당신의 생각을 물어보고 싶습니다. 다음 중 가장 모범 사례는 무엇입니까?

  1. 견해를 사용하기 위해 발표자 클래스의 방법을 노출시킵니다. (즉, 공개적으로 만듭니다).
  2. 발표자가 View 클래스에서 제기 한 이벤트를 듣게하십시오.

예를 들어 MVP는 시리얼 포트를 통해 통신하는 서비스를 사용합니다. 원격 장치에 연결하려면 내보기는 공개 발표 메소드 Connect ()를 호출하여 적절한 서비스 방법을 호출합니다.

Connect () 이벤트를 높이고 발표자가 듣게하는 것이 더 나은 연습일까요?

도움이 되었습니까?

해결책

일반적으로 저는보기가 발표자에게 의존하고 발표자가 모델에 의존하도록합니다. 이는 여러 발표자가 동일한 모델을 사용할 수 있으며 동일한 발표자가 내 다중 뷰 (다른 UI 레이아웃 또는 WinForms 대 웹 등)를 사용할 수 있음을 의미합니다. 이를 용이하게하기 위해 View는 발표자의 공개 메소드를 호출하고 발표자의 이벤트를 듣습니다.

이런 식으로 작업하고 싶은 이유를 예로 들어 초보자 명령의 하위 집합을 보여주는 초보자 및 전문가를위한 두 개의보기가있는 인터페이스를 상상해보십시오. 이 두 뷰 모두에 동일한 발표자가 사용되는 경우 초보자보기는 발표자가 거기에 있어야하므로 트리거되지 않더라도 결합 할 수 있으므로 모든 전문가 명령에 대한 이벤트를 노출해야합니다. 반면에 발표자는 모든 전문가 옵션에 대한 방법을 노출시킬 수 있으며 초보자보기는 절대 호출하지 않습니다. 이는보기 나 발표자가 사용하지 않은 기능을 구현하지 않음을 의미합니다.

다른 팁

여기서 따라야 할 지침은 "발표자의 공개 메소드는 매개 변수가 없어야합니다.보기 객체는 파라미터가없는 발표자 만 액세스해야합니다. 다른 옵션은 뷰가 발표자가 구독 할 수있는 이벤트를 정의 할 수 있습니다. 어느 쪽이든, 매개 변수가 전달되지 않아야합니다. . " . 소지 및 의견에 열려 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top