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



活动中剥离演示者的角色可以获得什么好处?

为了将

活动与演示者分开,可以分离哪些角色/关注点?

为什么要将它们分成两个不同的关注点?

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

举例说明,优点或缺点。

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

可重用性的真实用例:我们有一个插图实体,其中包含摄影师、版权和拍摄日期等属性,可以链接到文档。的图例是关于文档和插图之间的关系。您可以在自己的屏幕上编辑插图和图例,但我们也希望可以从图例屏幕编辑插图。所以我们为插图屏幕做了一个演示者。插图活动是围绕该演示者的非常薄的包装器,图例活动稍微复杂一些,但会重用演示者和视图。活动的职责是提供RequestContext并执行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,因此您无需GWTTestCase即可对其进行测试。

首先是两个感谢您的问题,它推动我进行有史以来最长的研究。 :)

根据托莫斯·布罗耶(Thomos Broyer(的说法。

活动不能与小部件交谈,而演示者可以这样做。

两个主要关注领域:

1-将数据放入小部件中:如何改进此设计?

Server (RequestFactory) ---> Activity ---> WidgetPresenter ---> Widget

在这里,RequestFactory将数据交给Activity,然后将其提供给Presenter随后将其交给widget.

2-将数据从widgets获取到server

widget ---> WidgetPresenter ---> Activity ---> Server(RequestFactory) 

最新更新