感谢您的输入。我提到了MVP快速入门http://msdn.microsoft.com/en-
us/library/ff650240.aspx。
Model can raise events。我认为,我应该采用这种方法。任何想法都欢迎。
另外,我已经发布了
http://forums.asp.net/t/1760921.aspx/1?Model+View+Presenter+Guidelines来收集有关MVP的一般规则。
引用
开发可以同时与View和Model通信的Presenter。演示者可能仅具有视图界面的知识。即使具体视图发生变化,也不会影响演示者。
在具体视图中,控件的事件处理程序将仅调用演示者方法或引发演示者将已订阅的事件。不应以具体的视图编写表示规则/逻辑。
演示者应仅具有模型的接口对象;不是具体的模型。这是为了便于单元测试
视图可以引用业务实体。但是,不应编写与实体对象相关联的逻辑。它可能只是将实体对象传递给演示者。
视图接口应该是一个抽象。它不应具有任何控件或System.Web参考。具体而言,接口定义的方法除外。
“模型”从不了解具体视图以及界面视图
“模型”可以定义和引发事件。演示者可以订阅这些由模型引发的事件。
演示者中的公共方法应该是无参数的。视图对象应仅访问演示者的无参数方法。另一个选项是视图可以定义演示者可以订阅的事件。无论哪种方式,都不应传递参数。
由于模型具有所有必需的值(要存储回数据库中),因此无需(大部分时间)将任何值从视图传递给模型。例如,当在下拉列表中选择一项时,只需将控件的当前索引传递给模型。然后模型知道如何获取相应的域值。在这种情况下,视图无需将任何内容传递给演示者。演示者知道如何从视图中获取价值。
视图可以直接使用模型(不使用演示者)。例如ObjectDataSource的SelectMethod。但是控制器从不知道具体视图和接口视图。
演示者引用视图接口,而不是视图的具体实现。这允许您在运行单元测试时用模拟视图替换实际视图。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)