【发布时间】:2011-01-19 06:51:13
【问题描述】:
我注意到在 Webforms MVP 实现和大多数其他示例中,Presenter 通常将处理程序附加到 View 事件。为什么 Views 不能直接调用 Presenter 中的方法?只是想知道,由于将处理程序附加到事件、为特殊参数定义 EventArgs、在视图端检查事件是否为 null 的整个任务似乎比仅调用方法要乏味得多。
【问题讨论】:
我注意到在 Webforms MVP 实现和大多数其他示例中,Presenter 通常将处理程序附加到 View 事件。为什么 Views 不能直接调用 Presenter 中的方法?只是想知道,由于将处理程序附加到事件、为特殊参数定义 EventArgs、在视图端检查事件是否为 null 的整个任务似乎比仅调用方法要乏味得多。
【问题讨论】:
当然可以,我认为这是最好的中间立场。你所描述的是我相信称为观察演示者风格。这允许您将 View 与 Presenter 完全分离,从而使 View 不易受到 Presenter 内更改的影响。但它也引入了测试的复杂性,这就是开始使用 MVP 的原因。我根本不会打扰这种风格。在非常大的项目中,我们使用 Encapsulated Presenter 样式,其中 View 引用 Presenter,通过 IoC 容器注入,并且 View 只调用 Presenter 上的方法。易于理解,易于调试,易于测试。
【讨论】: