演示者应该是活动还是有活动?

问题描述:

我正在尝试使用GWT制作一个Web应用程序,并且我尝试使用MVP设计模式。它看起来像一个活动几乎与演示者相同,但演示者更特定于某个视图,这意味着演示者应该知道该视图支持的特殊方法/元素。演示者应该是活动还是有活动?

但有两种选择可以做同样的事情。

a)让Presenter使用视图所需的additioanl方法扩展Activity。

b)让演示者和活动彼此参照。在这种情况下,活动将执行通用操作,演示者将查看特定的操作。

任何人都可以请帮忙指出哪个选项更可行吗?谢谢!

与建筑设计决策一样,这取决于它。

我建议从简单的地方开始,其中活动是主持人;即一个班同时扮演活动(由活动经理驱动)和演讲者(驱动视图)的角色。
如果有需要,请将它们分开。要么获得更小的可维护类,要么开始拥有不同的生命周期(在GWT的mobilewebapp示例中,TaskActivity比演示者寿命更长,并且可以在其生命周期中在2个演示者之间切换)。

经验法则是活动是用于导航,并且您可以在不必导航的情况下(每个任务都有可收藏的URL)在多个任务之间切换。在modilewebapp示例的情况下,查看和编辑任务之间的切换不会在它们之间导航。
独立的活动和演示者也意味着你可以在不同的应用中有不同的导航方式,共享相同的演示者但不是相同的活动(注意:活动已经是关于这种类型的劈开术,但有时候它不会“比如你是否考虑在查看和编辑“页面”之间的导航或者只是在同一个“页面”中切换任务之间进行切换)。