Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT-将演示者的角色与活动分离_Java_Gwt_Mvp_Gwt Places_Gwt Activities - Fatal编程技术网

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

Java GWT-将演示者的角色与活动分离,java,gwt,mvp,gwt-places,gwt-activities,Java,Gwt,Mvp,Gwt Places,Gwt Activities,从一项活动中剥离演示者的角色可以获得什么好处 为了将活动与演示者分开,可以分离哪些角色/关注点 为什么要将它们分为两个不同的关注点 在什么情况下不统一它们才有意义 举个例子,说明优点或缺点。首先,感谢您提出的问题,这一问题促使我进行了有史以来最长的研究。:) 据托莫斯·布罗耶说 活动不能与小部件对话,演示者可以这样做。 两个主要关注领域: 1-将数据放入小部件: 如何改进这种设计 Server (RequestFactory) ---> Activity ---> WidgetPre

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

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

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

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


举个例子,说明优点或缺点。

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

据托莫斯·布罗耶说


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

两个主要关注领域:

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

Server (RequestFactory) ---> Activity ---> WidgetPresenter ---> Widget
在这里,
RequestFactory
将数据交给
Activity
,然后将数据交给
演示者
随后将其交给
小部件

2-从
小部件
获取数据到
服务器

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

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

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

可重用性的假设用例:

  • 对于不同的形状因素,您希望在同一屏幕上聚合内容或在其自己的屏幕上分离内容(例如,主/细节),当您聚合它们时,有两个活动可能并不理想。通过在手机外形要素中使用精简活动,您可以在平板电脑或桌面外形要素中的单个活动中重用组件(演示者/视图)
  • 在不同平台上重复使用同一演示者:您可以在Android应用程序和web应用程序(甚至可能是iOS应用程序)上使用同一演示者,该视图将是本机Android视图或基于GWT的视图,导航将由Android活动和/或片段与GWT活动和位置进行处理
关于可测试性(这是理论性的),然后您可以测试演示者,而无需活动生命周期的麻烦(模拟视图),然后单独测试生命周期(是否正确初始化和清理演示者、获取/缓存数据等。模拟演示者)

另请参见

Ray的想法是使MVP成为小部件的一个实现细节,就像今天的单元小部件使用内部演示器一样。从外部看,它们只是小部件,您可以按照自己的方式编写;在内部,他们使用MVP,因此您无需使用
GWTTestCase

即可对其进行测试。在您提供的链接中,活动只是链接到某个位置的演示者,而WidgetPresenter是没有关联位置的演示者。地点和演示者是分开的主题。没有什么可以阻止您拥有一个包含子演示者的演示者。现在,您可以决定处理superpresenter中的所有通信,但我相信这会使widgetpresenter无法在其他地方重用,这是一个缺点。这意味着活动是Presenter的基础(没有什么可以阻止您说它是一个过滤器)或者是我误解了这个问题:)有一件事是肯定的,就是这些活动对演示者来说只是一步之遥,这是我今天才知道的。如果我错了,请纠正我。“活动不能与小部件对话,演示者可以这样做”-请详细说明,因为演示者应该通过视图界面发言,而不直接管理视图中的小部件。演示者应该与直接寻址小部件分离。在我阅读你的答案之前,有人告诉过我同样的事情,但没有那么详细。这是我寻找的答案,以帮助我设计我的编码策略。Thk u。