我只是在学习 GWT,所以我仍在尝试理清它的所有怪癖和功能。我正在阅读他们给出的说明 MVP 模式的示例,我几乎明白了,除了我想知道一件事。
他们使用的 AppController 实现了 ValueChangeHandler 接口,当历史发生变化时触发 onValueChange 方法。
我的问题是 AppController 中的这个 onValueChange (我在下面为没有看过示例项目的人提供了它)。它对发送的历史令牌进行字符串比较,并实例化适当的演示者来处理操作。对于具有 3 个操作的示例应用程序来说,这一切都很好,但如何将其扩展到具有更多操作的真实应用程序?
坚持这种模式会导致相当大/丑陋else if
的 ,但我对 GWT (和 java )仍然太陌生,无法为大型应用程序推断出更好的模式。
任何帮助是极大的赞赏!
public class AppController implements Presenter, ValueChangeHandler<String> {
...
public void onValueChange(ValueChangeEvent<String> event) {
String token = event.getValue();
if (token != null) {
Presenter presenter = null;
if (token.equals("list")) {
presenter = new ContactsPresenter(rpcService, eventBus, new ContactsView());
}
else if (token.equals("add")) {
presenter = new EditContactPresenter(rpcService, eventBus, new EditContactView());
}
else if (token.equals("edit")) {
presenter = new EditContactPresenter(rpcService, eventBus, new EditContactView());
}
if (presenter != null) {
presenter.go(container);
}
}
}
}