2010-06-30 73 views
1

我目前正在构建一个GWT登录屏幕,并且设法获得了基本版本的登录结构。如何在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或是我使用的方法非常正常?

,因为我打算写了很多的代码,我想要得到的编码风格从一开始就正确。

任何反馈,非常感谢。

感谢,

回答

3

对于您想使用的Model-View-Presenter(MVP)的设计模式复杂的项目。它允许您将呈现逻辑(视图)与业务逻辑分开。为了让你开始,官方文件有twoarticles关于它加上有presentation by Ray Ryan,开始整个GWT + MVP = < 3雾霾:)之后,我建议浏览通过SO和GWT's Google Group MVP相关的问题。

+0

感谢您的链接。我观看了您链接的演示文稿。它的信息几乎太密集,以极快的速度移动。 MVP/GWT模式似乎适用于我的情况。谢谢。 – Chris 2010-07-01 05:59:32