围绕整个GWT MVP与活动和地点的混淆
在阅读了一段时间并观看了谷歌IO视频后,我仍然对MVP与活动和地点的关系感到困惑 我发现不久前发布了一条帖子--> MVP架构。MVP是一个概念,其中一种方法是场所活动框架 我还听到“演讲者类似于一项活动” 我们可以提供“没有MVP的活动和场所” 我们可以加入“MVP活动和场所” “MVP只不过是我们如何组织我们的项目,以便我们能够轻松地测试和组织代码” 然后我想弄明白像这样的东西-->围绕整个GWT MVP与活动和地点的混淆,gwt,mvp,gwt-places,gwt-activities,Gwt,Mvp,Gwt Places,Gwt Activities,在阅读了一段时间并观看了谷歌IO视频后,我仍然对MVP与活动和地点的关系感到困惑 我发现不久前发布了一条帖子--> MVP架构。MVP是一个概念,其中一种方法是场所活动框架 我还听到“演讲者类似于一项活动” 我们可以提供“没有MVP的活动和场所” 我们可以加入“MVP活动和场所” “MVP只不过是我们如何组织我们的项目,以便我们能够轻松地测试和组织代码” 然后我想弄明白像这样的东西--> 我真的很困惑。我想要一个一站式线程来结束所有的混乱 活动是演示者。地点只是历史标记的包装 这种混乱始于谷歌
我真的很困惑。我想要一个一站式线程来结束所有的混乱 活动是演示者。地点只是历史标记的包装 这种混乱始于谷歌IO视频,其中引入了MVP GWT概念,但没有给出实现。于是人们开始自己滚动。然后谷歌编写了2.1文档,详细介绍了这个概念,只提供了一些示例代码供下载。后来在2.2中,他们介绍了它们的完整实现、活动等
因此,如果你想走MVP路线,你需要选择你的实现。活动可能是最好的,因为它是官方的;DR:地点和活动与MVP没有任何关系。 Places是指导航到你的应用程序:你从一个地方到另一个地方。活动建立在位置之上,以帮助将“所见”与“所处位置”绑定:
- 当我在SO主页上时,主要部分显示所有主题中的问题列表,右侧顶部显示我最喜欢的标记并帮助我设置标记过滤器,下面是添加,添加下面是最近的标记列表,然后是最近的徽章列表
- 在此问题页面上,主要部分显示问题及其答案,右侧顶部替换为问题标签上的信息,然后是添加、链接问题和相关问题
ActivityManager
s管理,这些部分监听PlaceChangeEvent
s,并要求其关联的ActivityMapper
在该区域中显示哪个Activity
这都是关于导航的
与MVP没有任何关系(不管官方文件怎么说)。如果您使用MVP,您可能会让您的活动成为“演示者”,控制一个“视图”(活动将传递回在其
start
方法的参数中接收到的AcceptsOneWidget
)。但这不是一个规则,例如,在mobilewebapp示例中,Google是解耦活动和演示者的。只要您将它们视为两种开发模式,就很容易将它们分开。MVP是一种分离关注点和活动的模式,Places是URL和历史管理的工具
这里有一篇很好的文章,可以帮助您消除任何困惑,MVP代表模型,视图,演示者,它是一种编码模式。它只是从MVC(模型,视图,控制器)模式的演变。看 MVP和MVC的区别在于,在MVP中,模型和视图互不了解。在MVP中,你的观点应该尽可能地愚蠢。所有交互都由演示者处理。这只是正确组织代码的一种方式 有些人创建了框架,以减少以这种方式组织代码所需的工作量。看看不同的MVP实施方案。在网上很容易找到它们 MVP使您的代码更易于测试,因为您可以轻松地用其他实现(通常是模拟)替换您的视图,从而伪造行为或视图。因此,您不需要在浏览器环境中运行测试(GWT视图是HTML视图)。因此,您的测试将运行得更快 谷歌文档说: Activities and Places框架允许您在应用程序中创建可书签的URL 所以活动和场所不仅仅是一个MVP框架。然而,活动是一个演讲者
public interface Activity {
String mayStop();
void onCancel();
void onStop();
void start(AcceptsOneWidget panel, EventBus eventBus);
}
您可以为演示者使用活动界面,而无需使用位置和来自谷歌的其他对象。但在这种情况下,您可能应该编写一种自己的活动管理器,负责启动和停止您的活动。在开始和停止中,您可能希望创建视图、将其添加到dom、注册事件处理程序等,并且在停止时希望销毁所有这些
在其他一些MVP实现中,可以找到具有相同角色的bind()和unbind()方法
Google的Activity Place实现的威力来自Place对象背后的所有对象,这些对象将使您的活动开始或停止,并将处理历史
上面提到的其他人的位置只是您的URL的一个表示
google的Activity Place实现涉及到许多对象。下面是一个帮助您理解的模式。你会发现这个活动只是整个事情的一小部分
有两个独立的维度 设计模式 -无模式 -MVP 导航和屏幕遍历 -无导航 -活动和地点 您可能有一个应用程序,可以遵循以下其中一项
- 没有MVP,没有活动和场所
- 只有MVP
- 只有活动和场所
- 具有活动和场所的MVP