MVP 代表
Model,
View,
Presenter,是一种编程模式。它只是从
MVC(
Model,
View,
Controller)模式进化而来。参见
MVC wikipedia page。
MVP 和 MVC 的区别在于,在 MVP 中,模型和视图互不了解。在 MVP 中,你的视图应尽可能简单。所有交互都由 Presenter 处理。这只是一种适当组织代码的方式。
有些人创建了框架,以减少组织代码的工作量。可以查看不同的 MVP 实现。这很容易在网上找到。
MVP 使您的代码更容易测试,因为您可以轻松地将视图替换为另一个实现(通常是 Mock),该实现会伪造视图的行为。因此,您无需在浏览器环境下运行测试(GWT 视图是 HTML 视图)。因此,您的测试速度会更快。
Google 文档说:
活动和场所框架允许您在应用程序中创建可书签的URL。
因此,活动和场所不仅仅是一个MVP框架。尽管一个活动是一个Presenter。
public interface Activity {
String mayStop();
void onCancel();
void onStop();
void start(AcceptsOneWidget panel, EventBus eventBus);
}
你可以使用Activity接口作为你的Presenter,而不必使用Google的Places和其他对象。但在这种情况下,你可能需要编写自己的Activity Manager来负责启动和停止你的活动。在开始和停止时,你可能想创建你的视图,将其添加到DOM中,注册你的事件处理程序等。当你停止时,你会想要销毁所有这些。
在一些其他的MVP实现中,你可以找到具有相同作用的bind()和unbind()方法。
来自Google的Activity Place实现的强大之处在于Place对象背后的所有对象,它们将使你的活动开始或停止,并处理历史记录。
如其他人所述,Place只是你URL的表示。
Google的Activity Place实现涉及许多对象。下面是一个模式,以帮助你理解。你会发现,活动只是整个事情中的一小部分。
你可以在我的博客文章中找到更多细节。
![enter image description here](https://istack.dev59.com/dHHmz.webp)
Composite
”,这是否与MVP有关?也许更清楚的是,如果我说MVP和活动是正交的问题(一个是编码模式,另一个是关于应用内导航的工具/微框架)。 - Thomas Broyer