我已经使用 GWT 构建了一个相对较大的应用程序,并且我遵循了 Google 的最佳实践,并且我已经看到是的,它可以工作。通常,GWT People 会告诉我们 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、用于通知事件的事件总线、作为根的 applicationcontroller 并控制应用程序中的所有内容,例如更改视图、注册事件
应用程序控制器还实现了ValueChangeHandler<String> 以允许它在历史记录发生更改时听到并据此采取行动,例如更改视图。
然后你将拥有:
- 型号
- 观看次数
- 演讲者
模型可以与您的服务器共享。演示者声明了视图实现的接口。然后,演示者和视图通过接口进行对话,演示者和服务器通过您在入口点声明并注入应用程序控制器的rpcService 进行对话。
另外,如果你以这种方式实现你的应用程序,你会受益,因为当你使用 JUNIT 进行测试时,你可以只测试演示者,因此绕过视图。因为如果你在测试中包含视图,它会花费很多时间。视图将声明小部件,但演示者可以从视图中导入接口以与小部件交互
最后,应用层次结构如下:
--com.example.name.clients:
--应用控制器
--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:
查看here 了解更多信息,