MVP代表Model , View , Presenter,它是一种编码模式。它只是MVC(模型、视图、控制器)模式的演变。请参阅MVC 维基百科页面。
MVP 和 MVC 的区别在于,在 MVP 中,模型和视图是互不认识的。在 MVP 中,您的观点应该尽可能愚蠢。所有的交互都由 Presenter 处理。这只是正确组织代码的一种方式。
有些人创建了框架来减少以这种方式组织代码的工作量。看看不同的 MVP 实现。在网上很容易找到它们。
MVP 使您的代码更容易测试,因为您可以轻松地用其他实现(通常是 Mock)替换您的视图,这将伪造行为或您的视图。因此,您不需要在浏览器环境中运行测试(GWT 视图是 HTML 视图)。所以你的测试会运行得更快。
谷歌文档说:
活动和地点框架允许您在应用程序中创建可收藏的 URL。
因此,Activities and Places 不仅仅是一个 MVP 框架。尽管如此,一个Activity是一个Presenter。
public interface Activity {
String mayStop();
void onCancel();
void onStop();
void start(AcceptsOneWidget panel, EventBus eventBus);
}
您可以为演示者使用 Activity 界面,而无需使用Google 的Places和其他对象。但在这种情况下,您可能应该编写一种您自己的活动管理器,负责启动和停止您的活动。在开始和停止中,您可能想要创建视图,将其添加到 dom,注册事件处理程序等。当您停止时,您将想要销毁所有这些。
在其他一些 MVP 实现中,您可以找到具有相同作用的 bind() 和 unbind() 方法。
Google 的 Activity Place 实现的强大功能来自Place对象背后的所有对象,这些对象将使您的活动开始或停止并处理历史记录。
上面提到的其他人的地方只是您的 URL 的代表。
来自 google 的 Activity Place 实现涉及许多对象。这是一个帮助您理解的模式。你会看到活动只是整个事情的一小部分。您可以在本文中的我的博客上找到更多详细信息