2014-08-30 48 views
1

我將使用Professional ASP.NET Design Patterns來學習MVP模式。在表示層章節中,學習如何將MVP應用於asp.net。演示者的代碼是:爲什麼在MVP中使用Presenter接口?

public class HomePagePresenter : IHomePagePresenter 
{ 
    private IHomeView _view; 
    private ProductService _productService; 
    public HomePagePresenter(IHomeView view, ProductService productService) 
    { 
     _productService = productService; 
     _view = view; 
    } 
    public void Display() 
    { 
     _view.TopSellingProduct = _productService.GetBestSellingProducts(); 
     _view.CategoryList = _productService.GetAllCategories(); 
    } 
} 

public interface IHomePagePresenter 
{ 
    void Display(); 
} 

筆者說:

我已經定義了這個(接口HomePagePresenter),以鬆耦合的代碼,以幫助測試。

我不明白他將如何使用演示界面來創建測試?當我看着nmock example時,他們也沒有爲演示者創建任何界面。

+0

隨着源代碼的實踐,單元測試還包括解釋其好處 - http://www.advertisingmarket.co.uk/MVPPattern – 2015-12-05 00:10:12

回答

1

有許多的原因,使用接口暴露你的演講:

  1. 多態性 - 你可以有幾個IHomePagePresenter執行,並可以使用本地環境依賴注入的分辨率,以確定在運行時使用哪一個。測試期間

  2. 嘲弄 - 你可能需要模擬此Presenter進行單元測試的目的,它的方式更容易抵抗比一個具體的類工作的接口創建一個模擬。這也確實屬於多態性,但它是一個具體的現實世界的例子和鬆散耦合。 「鬆耦合」基本上可以快速輕鬆地替換類的實現,而無需更改太多/任何代碼。測試場景是測試可能引用另一個Presenter接口的Presenter類 - 您可以模擬其他Presenter對象而不是使用具體的類。

  3. 方法/屬性的訪問限制 - 接口限制,你可以看到一個實現的部件/使用,因此,例如,如果HomePagePresenter有許多方法/ proeprties,經常消費類不宜用/有訪問,您可以通過使用界面公開類來限制他們可以使用的內容。

相關問題