我有一个小的vaadin应用程序,它允许用户在表单中输入一些数据(员工详细信息,如姓名,姓名,地址等),并将每个员工对象存储在List中。 这是迄今为止的结构:
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对象并将其存储在List中。
所以我在思考,我可以在MyUI.java中进行函数调用,比如createNewEmployee()
,然后在另一个类CreateEmployee.java
中定义该函数,获取我需要的所有数据(名称,来自MyUI.java的姓氏,地址等)并在CreateEmployee.java
中构建新的Employee对象?这听起来合理吗?在MyUI.java中做到这一点很容易,但我认为应该只处理GUI,你们觉得怎么样?
答案 0 :(得分:1)
我喜欢使用服务设计模式,其中所有业务逻辑都封装在服务中。
您将拥有一个EmployeeService类,它可以在MyUI上将最简单的形式实例化为成员变量。我的服务通常是无国籍的,并且有商业方法。在您的示例中,它将具有名为createNewEmployee()的方法。
我通常喜欢为我的服务提供界面。有些人使用附加层进行任何数据源交互(搜索DAO)。我喜欢保持简单,直接从我的服务访问数据源。
如果我认为我将来会有多个实现或者需要更换数据源,那么我将拥有一个AbstractEmployeeService,其中大多数真正的业务逻辑将会运行,然后具有特定的数据源实现数据源交互的实现(例如JdbcEmployeeService。)
如果您想要更高级,我建议您使用Spring注入您的服务。请参阅http://vaadin.github.io/spring-tutorial/以获得开始。
不同的开发者会有不同的意见。没有一个正确的答案,但您正在将我们的业务逻辑分开!