我已经使用 GWT 构建了一个相对较大的应用程序,并且我遵循了 Google 的最佳实践,并且我已经看到是的,它可以工作。通常,GWT 人们告诉我们 MVP。
MVP 将您的应用程序解耦为可帮助您管理整个应用程序开发的部分。
通常,当您使用 MVP 时,您的应用程序将包含入口点,该入口点将包含:
public class Contacts implements EntryPoint {
public void onModuleLoad() {
ContactsServiceAsync rpcService = GWT.create(ContactsService.class);
HandlerManager eventBus = new HandlerManager(null);
AppController appViewer = new AppController(rpcService, eventBus);
appViewer.go(RootPanel.get());
}
}
如您所见,它创建客户端 RPC、用于通知事件的事件总线、作为根的应用程序控制器并控制应用程序中的所有内容,例如更改视图、注册事件
应用程序控制器还实现ValueChangeHandler<String>
了允许它在历史更改时听到并据此采取行动,例如更改视图。然后你将拥有:
- 楷模
- 意见
- 演讲者
该模型可与您的服务器共享。演示者声明了视图实现的接口。然后,演示者和视图通过接口进行对话,并且演示者和服务器通过rpcService
您在入口点中声明并注入应用程序控制器的方式进行对话。
此外,如果您以这种方式实现您的应用程序,您将受益,因为当您使用 JUNIT 进行测试时,您只能测试演示者,因此绕过视图。因为如果您在测试中包含视图,它将花费大量时间. 视图将声明小部件,但演示者可以从视图中导入接口以与小部件交互
最后,应用层次结构如下:
--com.example.name.clients:
--AppController --name.java
--name.Service.java
--name.ServiceAsync.java
--com.example.name.events:
--com.example.name.presenters:
--com.example.name.views:
--com.example.name.models:
--com.example.name.server:
--com.example.name.shared:
在这里查看更多信息,