2013-08-16 45 views
0

我研究過MVP的例子。我發現的例子都沒有一個複雜的表單。在現實生活中,表格可能變得非常複雜(特別是如果您正在工作的客戶不理解「單一責任原則」)。在MVP設計模式中,視圖是否可以有多個演示者?

記住這一點,下面的例子是否符合MVP原則?

表單代碼 - 表單實現兩個接口,每個接口對應一個接口。

public partial class ExampleForm : Form, ILookupView, IExampleView 
    { 
     //Constructor 
     public ExampleForm() 
     { 
      InitializeComponent(); 

      var presenterEquipment = new EquipmentPresenter(this); 
      presenterEquipment.PopulateEquipmentLookup(); 

      var presenterMain = new ManageComponentsPresenter(this); 
      presenterMain.SetInitialValues(); 
     } 
    } 

如果不是處理大型複雜表單的最佳方式是什麼?

很多謝謝。

回答

2

我會將視圖分成更小的視圖,實現爲用戶控件和組成小視圖的大視圖。

然而,從技術上講,我沒有看到你的方法無法解決的任何原因。您可以使用大視圖實現多個界面,並將多個演示者分配給不同的「子視圖」。

+0

感謝Wiktor是有道理的。 –

0

我的理念是讓設計模式符合您應用的需求。另外我對MVP的理解是,MVC不斷增長。爲了回答你的問題,MVP模型之間的關係是。

One View有一個Presenter與零個或多個模型對話。 如果您需要針對一個視圖使用多個演示者,那麼可能會出現這種情況,那麼這些視圖可能是很好的候選人,可以將其分解爲較大視圖導入的較小子視圖。或者有業務邏輯,可以分離出來的一個或多個模型

+0

視圖(即使它很大)仍然是一個簡單的getter和setter值。擁有一個小型演示者會受益於更小的依賴注入和更好的測試。 –

相關問題