被动视图和显示逻辑

时间:2010-04-19 15:30:43

标签: logic passive-view

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

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

我想改进视图和模型分离,并寻求更好的应用程序可测试性。因此,我想采取被动的观点。但我的问题是,你在哪里放置的逻辑只是与视图相关?就像textviewer应该在移动滚动条时滚动文本。你会把这个逻辑放到演示者身上吗? 让我们说textviewer有一些扩展功能。比如在textpassages上设置标记。这个逻辑清楚地表明要放入Presenter。但是,如果它与视图的所有“直接”逻辑(如滚动文本)混合在一起,那么Presenter可能变得非常大,这也不是一个很好的设计。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

演示者不必是单一的整体课程。最好是为不同的职责聚合不同的对象。从测试的角度来看,这实际上很好,你可以模拟出你目前没有测试的所有对象。