我刚刚学习GWT,所以我仍然试图理清它的所有怪癖和特征。我正在通过他们给出的例子来说明MVP模式,我几乎可以得到它,除了我想知道一件事情。使用MVP缩放gwt的“联系人”(示例项目)AppController
他们使用的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);
}
}
}
}