2011-03-21 227 views
0

我很喜歡mvc,mvp或mvvm模式。所以我正在尋找谷歌爲勝利表單應用程序實施良好的設計模式。我發現很多article.few傢伙說mvc是好的,很少有人說mvp是勝利應用的完美選擇。我發現了一個非常小的代碼,它在win apps中實現了mvp。我瀏覽代碼並發現開發人員必須編寫大量額外的代碼來綁定treeview或任何控件。windows窗體&設計圖案

如下

public interface IYourView 
{ 
    void BindTree(Model model); 
} 

public class YourView : System.Windows.Forms, IYourView 
{ 
    private Presenter presenter; 

    public YourView() 
    { 
     presenter = new YourPresenter(this); 
    } 

    public override OnLoad() 
    { 
     presenter.OnLoad(); 
    } 

    public void BindTree(Model model) 
    { 
     // Binding logic goes here.... 
    } 
} 

public class YourPresenter 
{ 
    private IYourView view; 

    public YourPresenter(IYourView view) 
    { 
     this.view = view; 
    } 

    public void OnLoad() 
    { 
     // Get data from service.... or whatever soruce 
     Model model = service.GetData(...); 
     view.BindTree(model); 
    } 
} 

請人通過代碼,並幫助我瞭解流量,因爲如何代碼應在MVP的圖案,我不知道寫的代碼。謝謝。

+0

請重新格式化 - 不要使用'...',但插入4個空格前的每代碼行 – dantuch 2011-03-21 18:16:18

+0

我最近一直在學習winforms模式,並想了解,但我不能放棄理解你的問題... – 2011-03-21 18:17:41

回答

2

此代碼已在使用MVP模式。

它聲明瞭一個接口IYourView和一個實現System.Windows.Form和這個新接口的具體類YourView。基本上,所做的就是創建一個新表單,並增加要求,它還實現IYourView中定義的BindTree()方法。

YourView類(形式),然後在以掛鉤的OnLoad事件與演示,儘管在演講訂閱形式的OnLoad事件,而不是我做的YourPresenter的依賴。

演示者YourPresenter將YourView的實例作爲依賴項,然後可以在其邏輯的其餘部分中使用該實例。

現在,使用你會遵循一個類似的過程:

  • 創建的YourView一個新實例(然後又創建演示)
  • 在演示實現邏輯(即 - 創建GetModel())來創建要綁定到樹
  • 呼叫view.BindTree(model)在演示模型,其中模型是你剛纔在上一步中
創建

因此,創建視圖的一個實例:

IYourView newView = new YourView(); 

然後在您的演講類:

Model model = GetModel(); 
newView.BindTree(model);