将演示者的角色从活动中剥离出来会有什么好处?
为了剖析作为演示者的活动,可以分开哪些角色/关注点?
为什么要将它们分成两个不同的问题?
在什么情况下不统一它们是否有意义?
举例,优点或缺点。
答案 0 :(得分:7)
我可以看到将演示者与活动分开的两个主要原因:可重用性和可测试性。
可重用性的真实用例:我们有一个插图实体,其中包含摄影师,版权和拍摄日期等属性,可以链接到文档。传说是关于文档和插图之间的关系。您可以在自己的屏幕上编辑插图和图例,但我们也希望可以从图例屏幕编辑插图。所以我们为插图画面做了一个演示者。插图活动是该演示者的一个非常薄的包装器,并且图例活动有点复杂,但重用了演示者和视图。活动的责任是提供RequestContext
并执行fire()
(保存/取消按钮位于其他活动上,类似于Google网上论坛上的操作)。
可重用性的假设用例:
关于可测试性(这是理论上的),您可以在没有活动生命周期麻烦的情况下测试您的演示者(模拟视图),然后单独测试生命周期(是否正确初始化和清理)升级演示者,获取/缓存数据等,模拟演示者。)
另请参阅 https://code.google.com/p/google-web-toolkit/source/detail?r=10185的提交消息
Ray的想法是让MVP成为小部件的实现细节,就像单元小部件今天使用内部演示者一样。从外面看,它们只是小部件,你可以按照你想要的方式构图;在内部,他们使用MVP,因此您可以在不需要GWTTestCase
的情况下测试它们。
答案 1 :(得分:0)
首先感谢两个问题,这些问题促使我进入有史以来最长的研究。 :)
根据Thomos Broyer所说here。
活动无法与小工具交谈,主持人可以这样做。
两个主要关注领域:
1-将数据导入小部件: 如何改进这种设计?
Server (RequestFactory) ---> Activity ---> WidgetPresenter ---> Widget
此处,RequestFactory
将数据交给Activity
,然后将其提供给Presenter
widget
随后将其交给widgets
。
2-从server
获取数据到widget ---> WidgetPresenter ---> Activity ---> Server(RequestFactory)
{{1}}