2014-08-30 61 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,经常消费类不宜用/有访问,您可以通过使用界面公开类来限制他们可以使用的内容。

相关问题