我有一个小型 vaadin 应用程序,它允许用户在表单中输入一些数据(员工详细信息,如姓名、地址等)并将每个员工对象存储在列表中。 这是到目前为止的结构:
EmployeeForm
src/main/java
com.vaadin.project.EmployeeForm
MyUI.java
employee
Address.java
Employee.java
因此,出于测试目的,我直接在 MyUI.java 中创建了一个 Employee 对象,如下所示:
Address address1 = new Address(34, "Flinch Street","KT25AG");
Employee employee1 = new Employee("John","Smith", "Male", 39, address1, "Permanent", 8765);
List<Employee> employee = new ArrayList<Employee>();
employee.add(employee1);
for(Employee currentEmployee : employee ){
System.out.println(employee);
}
只是为了确保一切正常,但在那里这样做似乎是错误的,所以我想创建另一个处理所有业务逻辑的类,我想知道最好的方法是什么。 通过业务登录,我的意思是,我需要确保它发生的是,在用户填写 MyUI.java 文件上的表单并单击提交按钮后,将创建一个新的 Employee 对象并将其存储在列表中。 所以我在想,我可以在 MyUI.java 中调用一个函数,例如 createNewEmployee() ,然后在另一个类 CreateEmployee.java 中定义该函数,得到从 MyUI.java 获取我需要的所有数据(姓名、地址等)并在 CreateEmployee.java 中构造新的 Employee 对象?听起来合理吗?在 MyUI.java 中做到这一点很容易,但我认为应该只处理 GUI,你们觉得怎么样?
最佳答案
我喜欢使用服务设计模式,其中所有业务逻辑都封装在服务中。
您将拥有一个 EmployeeService 类,它可以以最简单的形式实例化为 MyUI 上的成员变量。我的服务通常是无状态的并且有业务方法。在您的示例中,它将具有名为 createNewEmployee() 的方法。
我通常喜欢为我的服务提供一个界面。有些人使用附加层进行任何数据源交互(搜索 DAO)。我喜欢保持简单并直接从我的服务访问数据源。
如果我认为我将来会有多个实现或需要交换数据源,那么我将有一个 AbstractEmployeeService,其中大部分真正的业务逻辑将进行,然后有一个数据源特定的实现进行数据源交互(例如 JdbcEmployeeService。)
如果您想获得更高级的体验,我建议您使用 Spring 来注入(inject)您的服务。请参阅http://vaadin.github.io/spring-tutorial/开始吧。
不同的开发者会有不同的看法。没有一个正确的答案,但您正走在分离我们的业务逻辑的正确道路上!
关于java - 在 vaadin 应用程序中放置我的企业登录信息的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40950060/