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。