我正在构建一个GWT登录屏幕,我设法让登录结构的基本版本正常工作。
我创建了以下部分:
我的入口点方法中有以下逻辑:
MyApplication mainWindow = null;
public void onModuleLoad() {
LoginScreen loginScreen = new LoginScreen() {
@Override
public String onLogin(String username, String password) {
boolean passwordWasOk = rpcCheckUsernamePassword(username,password); // mechanism not important for this question
if (passwordWasOk) {
RootPanel.get().remove(0);
mainWindow = new MyApplication();
// Using root layout panel as main window is a layout type composite
RootLayoutPanel.get().add(mainWindow);
return null;
} else {
return "password was incorrect";
}
}
};
RootPanel.get().add(loginScreen);
}
因此,我在LoginScreen组合中创建了一个方法,当用户单击“登录”按钮时,该方法被调用。如果onLogin方法未通过用户名和密码的验证,则可以将叙述返回到登录组合,以便它可以更新用户。登录屏幕将保留在屏幕上,直到用户使用正确的用户名/密码组合。
我的问题是,这是使用复合材料的正确方法吗?我的登录逻辑应该位于何处。是在复合的构造函数中注入某种登录处理程序对象还是通过setter更好的替代方法,还是我使用的方法很正常?
由于我打算编写相当多的代码,我希望从一开始就让编码风格正确。
非常感谢任何反馈。
谢谢,
答案 0 :(得分:3)
对于复杂项目,您需要使用Model-View-Presenter(MVP)设计模式。它允许您将呈现逻辑(视图)与业务逻辑分开。为了帮助您入门,官方文档有two articles关于它,还有 presentation by Ray Ryan启动整个GWT + MVP =< 3 haze :)之后,我建议浏览SO和GWT's Google Group上的MVP相关问题。