2

就理论而言,似乎 Asp.net MVC 框架可以更好地描述为MVP软件模式……为什么不呢?

因为在我看来,我将 Asp.net MVC 视为具有调用控制器操作的功能视图(运行脚本)的框架。所以看起来观点是大师。

4

1 回答 1

2

有两个明显的区别(取自源):

被动视图

视图尽可能地愚蠢并且包含几乎为零的逻辑。Presenter 是与 View 和 Model 对话的中间人。View 和 Model 完全相互屏蔽。Model 可能会引发事件,但 Presenter 订阅它们以更新 View。在 Passive View 中没有直接的数据绑定,而是 View 公开了 Presenter 用来设置数据的 setter 属性。所有状态都在 Presenter 而不是 View 中管理。

Pro:最大的可测试性表面;视图和模型的清晰分离

缺点:当您自己进行所有数据绑定时,需要做更多工作(例如所有 setter 属性)。

监督控制器

Presenter 处理用户手势。View 通过数据绑定直接绑定到 Model。在这种情况下,Presenter 的工作是将模型传递给视图,以便它可以绑定到它。Presenter 还将包含诸如按下按钮、导航等手势的逻辑。

优点:通过利用数据绑定减少了代码量。

缺点:可测试的表面较少(因为数据绑定),并且视图中的封装较少,因为它直接与模型对话。

看到这个问题:什么是MVP和MVC,有什么区别?

于 2012-04-04T07:28:22.930 回答