[英]Where to put my business login in vaadin application
我有一個小的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對象並將其存儲在List中。 所以我在想,我可以在MyUI.java中調用一個函數,例如createNewEmployee()
,然后在另一個類CreateEmployee.java
定義該函數,從中獲取我需要的所有數據(名稱,姓氏,地址等) MyUI.java並在CreateEmployee.java
構造新的Employee對象? 聽起來合理嗎? 在MyUI.java中執行此操作很容易,但是我認為那應該只處理GUI,你們認為呢?
我喜歡使用一種服務設計模式,其中所有業務邏輯都封裝在服務中。
您將擁有一個EmployeeService類,該類可以以最簡單的形式實例化為MyUI上的成員變量。 我的服務通常是無狀態的,並且具有業務方法。 在您的示例中,它將具有名為createNewEmployee()的方法。
我通常喜歡為我的服務提供接口。 有些人為任何數據源交互(搜索DAO)使用附加層。 我喜歡保持簡單,並直接從我的服務訪問數據源。
如果我認為我將來將有多種實現或需要交換數據源,那么我將擁有AbstractEmployeeService,其中大多數真正的業務邏輯都將運用於此,然后有一個特定於數據源的實現來執行數據源交互(例如JdbcEmployeeService。)
如果您想獲得更高級的建議,我建議使用Spring注入您的服務。 請參閱http://vaadin.github.io/spring-tutorial/以開始使用。
不同的開發人員會有不同的意見。 沒有一個正確的答案,但是您正沿着正確的道路分離我們的業務邏輯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.