Model-View-Presenter框架:接口应该在哪个项目中生效?

时间:2013-06-04 18:36:07

标签: c# interface project mvp

我正在涉足MVP设计框架,目前我的解决方案如下:

项目:MODEL 包含:具体对象类,DataRetrieval类,IDataRetrieval接口

项目:PRESENTER 包含:Presenter类,IView接口

项目:VIEW 包含:查看类,程序类

我一直在重新审视这个解决方案,但现在我不记得为什么我按原样分配了接口。这似乎不对。我尝试了以下方法:

  1. 将接口移动到相关项目中 实施它们。
  2. 将两个界面移至演示者类。
  3. 进行这些更改中的任何一项都需要一些工作,所以我只是想知道其中一个答案是否比另一个更好(或者两者都非常非常错误:))

    如果重要,这是用C#设计的。

    我很想听听你的意见!

    安迪

2 个答案:

答案 0 :(得分:2)

我刚刚在Winforms上使用我的自定义MVP框架。根据我的经验,我可以清楚地确定任何MVP实现的以下子项目

  1. 模型项目
  2. 查看接口项目
  3. Presenter Interfaces Project(它也可以与视图界面一起使用)
  4. 演示者实施项目
  5. 查看实施项目(这是Winforms / WPF / ASP.NET的内容)
  6. 应用程序控制器(这是MVP的一个重要且经常被忽视的方面。它负责启动整个框架,包括应用程序本身。它还管理交叉主持人通信和导航)
  7. 应用程序导航器(导航器在何时播出具体视图和演示者) 应用程序控制器要求)

答案 1 :(得分:1)

我建议您在解决方案中添加一个单独的项目,并将其命名为YourSolutionName.Contracts。移动所有View和Model接口,这样Presenter项目就不会有来自这两个程序集的依赖项(有关详细信息,请检查依赖项反转原理)。