我们如何在java中实际实现实体边界控制模式?

时间:2013-03-20 23:01:07

标签: java swing uml

我正在尝试创建一个图书馆管理系统。现在,我知道边界不能直接与实体交互。控件类充当边界和实体类之间的中介。但是,何时创建这些类的对象?

首先,让我们谈谈登录。边界将是使用Java Swing创建的登录表单的UI。 Controller类将是PersonController,它包含一个名为“validateUser()”的函数。名为User的Entity类包含用户的信息并访问数据库。

现在,我需要创建用户界面,获取用户名&使用动作侦听器从UI获取密码,然后使用用户名&创建用户实体。密码,然后调用PersonController的validateUser()方法来检查登录是否正确并且用户是否有效。

我该怎么做?我在哪里创建这些对象?

这是我的代码,直到现在:

public class MainClass { // main class

    public static void main(String[] args) {
        PersonController loginSession = new PersonController(); //UNSURE
    }
}

public class PersonController {

    public PersonController(){
        LoginUI loginForm = new LoginUI(); //UNSURE
        loginForm.setVisible(true); //UNSURE
    }
    //implementation of the validateUser() function
}

public class User {
    private String username;
    private String password;
    private String role;
    private String name;
    private String phone;
    private String email;
    // get & set methods and accessing the database

}
public class LoginUI{
    //entire code for the UI in Java Swing created using Netbeans IDE
}

1 个答案:

答案 0 :(得分:1)

在我看来,这个过程应该是这样的......

您有三个元素,UI,模型和控制器。

用户界面向用户提供选择......

模型将需要创建一个User对象(因为您的UI不应该知道如何实现这一目标)。

控制器将负责响应来自UI的事件并决定应该做什么。

当用户输入值并单击“接受”操作(它可能是什么)时,控制器会捕获该事件并从UI请求User对象。 UI获取用户输入的信息,并要求模型使用这些值创建User对象。

控制器可以验证User对象。

在任何时候,过程的任何部分都可以选择抛出异常。由于UI是系统中唯一可以实际与用户对话的部分,因此用户界面有责任显示这些错误。

基本工作流程可能看起来像这样......

创建模型,表单和控制器。

将模型添加到表单,将表单添加到控制器。

这些不同元素之间的相互作用必须尽可能通过接口完成。没有任何部分应该更多地了解其他部分,然后它绝对需要 - 恕我直言。

我的第一步是 - 在脑海中清楚地知道你想要实现的目标。找出谁负责什么,并设计连接它们所需的桥梁