我正在尝试使用GWT创建一个Web应用程序,我正在尝试使用MVP设计模式。看起来Activity与Presenter几乎相同,但是演示者更特定于某个视图,这意味着Presenter应该知道视图支持的特殊方法/元素。
但有两种选择可以做同样的事情。
a)让Presenter使用视图所需的additioanl方法扩展一个Activity。
b)让演示者和活动相互参照。在这种情况下,活动将执行通用操作,演示者将查看特定操作。
有人可以帮忙指出哪个选项更可行吗?谢谢!
答案 0 :(得分:1)
与建筑设计决策一样:取决于它。
我建议开始简单,活动是演示者;即一个类既扮演活动的角色(由活动管理者驱动)又扮演主持人(驱动视图)。
如果需要,分开它们。要么获得更小的更易维护的类,要么因为你开始有不同的生命周期(在GWT的mobilewebapp样本中,TaskActivity
的寿命比演示者长,并且可以在其生命周期内在2个演示者之间切换。)
经验法则是活动用于导航,您可以在不必导航的情况下切换多个任务(每个任务都有可收藏的URL)。对于modilewebapp示例,在查看和编辑任务之间切换不会在它们之间导航 拥有单独的活动和演示者也意味着您可以有不同的方式在不同的应用程序中导航,共享相同的演示者,但不是相同的活动(注意:活动已经是关于那种切开术,但有时候它没有'是否真的匹配,例如您是否考虑在查看和编辑“#34;页面”之间的导航之间进行切换,或者只是在相同的页面中切换任务")。