簡體   English   中英

為什么在MVP中使用Presenter接口?

[英]Why using interface for Presenter in MVP?

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

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的接口)來松散地耦合代碼並幫助測試。

我無法理解他將如何使用presenter界面創建測試? 當我查看nmock示例時,他們也沒有為演示者創建任何界面。

使用接口公開Presenters有很多原因:

  1. 多態性 - 您可以使用多個IHomePagePresenter實現,並可以使用本地上下文依賴注入解析來確定在運行時使用哪個。

  2. 在測試期間進行模擬 - 您可能需要模擬此特定的​​Presenter以進行單元測試,並且對於接口創建模擬比使用具體類更容易。 這實際上也屬於多態性,但它是一個具體的現實世界的例子和松散耦合。 “松散耦合”基本上能夠快速輕松地交換類的實現,而無需更改太多/任何代碼。 測試場景是您正在測試一個Presenter類,它可能引用另一個Presenter接口 - 您將模擬其他Presenter對象而不是使用具體類。

  3. 方法/屬性訪問限制 - 接口限制您可以查看/使用的實現的哪些部分,因此,例如,如果HomePagePresenter有許多方法/ proeprties,該類的常規使用者不應該使用/有權訪問,您可以限制什么他們可以通過使用界面暴露類來使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM