Nit*_*eti 21 mvp gwt gwt-activities gwt-places
阅读一段时间并观看Google IO视频后,我仍然对MVP与Activity和Places的关系感到困惑.
我找到了一段时间发布的帖子 - > GWT 2.2 MVP vs. GWT 2.1 Activities-Places
"MVP架构.MVP是概念,其中一个方法就是场所 - 活动框架"
我还听到"演示者类似于活动"
我们可以给出"没有MVP的活动和场所"
我们可以混合"活动和地方与MVP"
"MVP只不过是我们如何组织我们的项目,以便我们可以轻松地测试和组织代码"
然后我想弄清楚这样的东西 - > http://code.google.com/p/gwt-platform/
我真的很困惑.我想要一站式线程来结束所有的混乱.
Tho*_*yer 21
TL; DR:场所和活动与MVP无关.
地方是关于导航到您的应用程序:您从一个地方到另一个地方.活动建立在地方之上,以帮助将"你看到的"与"你在哪里"结合起来:
这些"部分"(区域)中的每一个都由ActivityManagers 管理,这些s听取PlaceChangeEvents并询问其相关联的ActivityMapper哪个Activity在该区域中显示.
这都是关于导航的.
与MVP没有任何关系(尽管官方文档说的是这样).如果你使用MVP,你可能会让你的活动"演示者",控制一个"视图"(活动将传递回AcceptsOneWidget其start方法参数中的接收者).这不是一个规则,例如,谷歌在mobilewebapp样本中试验了解耦活动和演示者.
MVP代表Model,View,Presenter,它是一种编码模式.它只是MVC(模型,视图,控制器)模式的演变.请参阅MVC维基百科页面.
MVP和MVC之间的区别在于,在MVP中,模型和视图彼此不了解.在MVP中,你的观点应尽可能愚蠢.所有交互都由Presenter处理.它只是一种正确组织代码的方法.
有些人已经创建了框架来减少以这种方式组织代码所需的工作量.看看不同的MVPimplementations.在网上很容易找到它们.
MVP使您的代码更容易测试,因为您可以通过其他实现(通常是模拟)轻松替换您的视图,这将伪造行为或您的视图.因此,您无需使用浏览器环境运行测试(GWT视图是HTML视图).所以你的测试运行得更快.
谷歌文档说:
"活动和位置"框架允许您在应用程序中创建可收藏的URL.
所以活动和场所不仅仅是一个MVP框架.然而,活动是演示者.
public interface Activity {
String mayStop();
void onCancel();
void onStop();
void start(AcceptsOneWidget panel, EventBus eventBus);
}
Run Code Online (Sandbox Code Playgroud)
您可以在不使用Google的Google 地方信息和其他对象的情况下为演示者使用"活动"界面.但在这种情况下,您应该编写一种自己的活动管理器,负责启动和停止您的活动.在开始和停止时,您可能想要创建视图,将其添加到dom,注册事件处理程序等.当您停止时,您将希望销毁所有这些.
在其他一些MVP实现中,您可以找到具有相同角色的bind()和unbind()方法.
来自Google的Activity Place实施的强大功能来自Place对象后面的所有对象,这些对象将使您的活动开始或停止并且将处理历史记录.
上面提到的其他人的地方只是您URL的一种表示.
谷歌的活动场所实施涉及许多对象.这是一个帮助您理解的模式.你会发现活动只是整个活动的一小部分.您可以在本文中的博客中找到更多详细信息

活动是演示者.地方只是历史令牌的包装.
混乱开始于谷歌IO视频,其中引入了MVP GWT概念,但没有给出实施.所以人们开始自己动手.然后谷歌写了2.1文档,他们详细说明了这个概念,并给出了一些示例代码供下载.在2.2后期,他们介绍了他们的全面实施,活动等.
所以,如果你想要进入MVP路线,你需要选择你的实施.活动可能是最好的,因为它是官方的.