2011-03-21 3 views

답변

52

차이점은보기 레이어 업데이트에 있습니다. MSDN에 Model-View-Presenter pattern 페이지에서

:

모델이 업데이트 될 때,보기는 변경 사항을 반영하도록 업데이트해야합니다. 보기 업데이트는 여러 가지 방법으로 처리 할 수 ​​있습니다. Model-View-Presenter 변종 인 Passive View 및 Supervising Controller는보기 업데이트를 구현하는 다양한 방법을 지정합니다.

수동보기에서 발표자는 모델의 변경 사항을 반영하여보기를 업데이트합니다. 모델과의 상호 작용은 발표자에 의해서만 처리됩니다. 뷰는 모델의 변경 사항을 인식하지 못합니다.

감독 컨트롤러에서보기는 모델과 직접 상호 작용하여 발표자의 개입없이 선언적으로 정의 할 수있는 간단한 데이터 바인딩을 수행합니다. 발표자가 모델을 업데이트합니다. 선언적으로 지정할 수없는 복잡한 UI 로직이 필요한 경우에만 뷰의 상태를 조작합니다. 복잡한 UI 로직의 예로는 컨트롤의 색상을 변경하거나 컨트롤을 동적으로 숨기거나 표시하는 등이 있습니다. 그림 1은 Passive View 및 Supervising Controller 변형의 논리적 인 모습을 보여줍니다.

수동보기 또는 이 컨트롤러을 감독 사용하기로 한 결정은 주로 당신이 당신의 응용 프로그램이 원하는 방법 검증에 따라 달라집니다. 테스트 가능성이 응용 프로그램의 주요 관심사 인 경우, 발표자를 테스트하여 모든 UI 논리를 테스트 할 수 있으므로 수동보기가 더 적합 할 수 있습니다. 반면에 전체 테스트 가능성에 비해 코드 단순성을 선호하는 경우 간단한 UI 변경을 위해보기를 업데이트하는 발표자에 코드를 포함 할 필요가 없기 때문에 감독 컨트롤러가 더 나은 옵션 일 수 있습니다. 패시브 뷰와 감독 컨트롤러 중에서 선택할 때 다음을 고려하십시오.

  • 두 변형을 모두 사용하면 프레젠테이션 논리의 테스트 가능성을 높일 수 있습니다.
  • 수동보기는 일반적으로 모든보기 업데이트 논리가 발표자에 배치되므로 감독 관리자보다 큰 시험 화면을 제공합니다.
  • 감독자 컨트롤러는 일반적으로 간단한보기 업데이트를 수행하지 않기 때문에 수동보기보다 코드가 덜 필요합니다.

추가 읽기 :

수동보기 :

http://martinfowler.com/eaaDev/PassiveScreen.html

http://codebetter.com/jeremymiller/2007/05/31/build-your-own-cab-part-4-the-passive-view/

감독 컨트롤러 :

,451,515,

http://martinfowler.com/eaaDev/SupervisingPresenter.html

http://codebetter.com/jeremymiller/2007/05/25/build-you-own-cab-part-3-the-supervising-controller-pattern/