1

在 MVC 和 MVP 和类似的模式中,经常有“被动视图”的方法,它尽可能愚蠢(包含尽可能少的逻辑)。这应该有助于单元测试并创建更清晰的视图和模型分离。

我知道这些模式有非常不同的风格,尤其是对 MVP 的理解似乎因文章而异。因此我的问题不是“我如何正确实现这种模式”。

我想改进视图和模型分离并提高应用程序的可测试性。因此,我想采取被动的观点。但我的问题是,你会将显然只与视图相关的逻辑放在哪里?当滚动条移动时,像 textviewer 一样应该滚动文本。你会把这个逻辑放到Presenter中吗?假设 textviewer 具有一些扩展功能。比如在文本段落上设置标记。将其逻辑放入 Presenter 中显然是有意义的。但是,如果它与视图的所有“直接”逻辑(如滚动文本)混合在一起,Presenter 可能会变得非常大,这也不是一个很好的设计。

所以我的问题是在哪里放置被动视图的显示相关逻辑以及在 Presenter 中混合什么功能。

谢谢!

4

1 回答 1

0

如果在用户滚动时需要从模型中获取更多数据,我会将滚动条逻辑放在演示者中。即使没有,视图也应该通知演示者。

有时 GUI API 会自行处理滚动。如果是这种情况,那么您所能做的就是通知演示者中的存根(它什么都不做)。视图不知道什么对演示者很重要。

演示者不必是一个单一的整体类。最好为不同的职责聚合不同的对象。从测试的角度来看,这实际上很好,您可以在其中模拟出您当前未测试的所有对象。

于 2010-04-19T16:33:33.943 回答