6

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

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

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

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

举个例子,优点或缺点。

4

2 回答 2

7

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

可重用性的真实用例:我们有一个插图实体,具有摄影师、版权和拍摄日期等属性,可以链接到文档。的图例是关于文档和插图之间的关系。您可以在自己的屏幕上编辑插图和图例,但我们还希望可以从图例屏幕编辑插图。所以我们为插图屏幕做了一个演示者。插图活动是对演示者的一个非常薄的包装,图例活动有点复杂,但重用了演示者和视图。活动的责任是提供RequestContexts 并执行fire()(保存/取消按钮在另一个活动上,类似于 Google 群组上的操作)。

可重用性的假设用例:

  • 对于不同的形式因素,您希望在同一屏幕上聚合事物或在各自的屏幕上将它们分开(例如主/详细信息),并且当您聚合它们时,拥有两个活动可能并不理想。在手机外形中使用精简活动允许您在平板电脑或台式机外形的单个活动中重用组件(演示者/视图)。
  • 在不同平台上重用同一个presenter:你可以在一个Android应用和一个web应用(甚至可能是一个通过java2objc的iOS应用)上使用同一个presenter,视图可以是原生Android视图或基于GWT的视图,并且导航将由 Android 活动和/或片段与 GWT 活动和地点处理。

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

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

于 2013-03-09T12:34:07.690 回答
0

首先,感谢您提出的两个问题,这促使我进行了有史以来最长的研究。:)

根据Thomos Broyer 的说法

活动不能与小部件对话,演示者可以做到。

两个主要关注领域:

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

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

在这里,RequestFactory将数据交给Activity,然后交给 ,然后Presenter 交给widget

2- 将数据widgetsserver

widget ---> WidgetPresenter ---> Activity ---> Server(RequestFactory) 
于 2013-03-09T08:54:54.137 回答