GWT - 将演示者的角色与活动分开

Ble*_*eek 6 java mvp gwt gwt-activities gwt-places

剥夺演示者从活动中的角色可以获得哪些优势?

为了剖析作为演示者的活动,可以分离哪些角色/关注点?

你为什么要把它们分成两个不同的问题?

在什么情况下不统一它们是否有意义?

举例,利弊.

Tho*_*yer 7

我可以看到将演示者与活动分开的两个主要原因:可重用性和可测试性.

可重用性的真实用例:我们有一个插图实体,其中包含摄影师,版权和拍摄日期等属性,可以链接到文档.传说是关于文档和插图之间的关系.您可以在自己的屏幕上编辑插图和图例,但我们也希望可以从图例屏幕编辑插图.所以我们为插图画面做了一个演示者.插图活动是该演示者的一个非常薄的包装器,并且图例活动有点复杂,但重用了演示者和视图.活动的责任是提供RequestContexts并执行fire()(保存/取消按钮在其他活动上,类似于Google网上论坛上的操作).

可重用性的假设用例:

  • 对于不同的形式因素,您希望在同一屏幕上聚合事物或在自己的屏幕上将它们分开(例如主/细节),当您聚合它们时,进行两项活动可能并不理想.通过使用手机外形中的精简活动,您可以在平板电脑或桌面外形中的单个活动中重复使用组件(演示者/视图).
  • 在不同的平台上重复使用相同的演示者:您可以在Android应用程序和Web应用程序(甚至可能是通过java2objc的iOS应用程序)上使用相同的演示者,视图将是本机Android视图或基于GWT的视图,并且导航将由Android活动和/或片段与GWT活动和地点处理.

关于可测试性(这是理论上的),您可以在没有活动生命周期的麻烦(模拟视图)的情况下测试您的演示者,然后单独测试生命周期(是否正确初始化和清理演示者,获取/缓存数据,嘲笑主持人).

另请参阅https://code.google.com/p/google-web-toolkit/source/detail?r=10185的提交消息
Ray的想法是让MVP成为小部件的实现细节,就像单元格小部件使用内部演示者一样今天.从外面看,它们只是小部件,你可以按照你想要的方式构图; 在内部,他们使用MVP,因此您可以测试它们而无需a GWTTestCase.