慕碼人2483693
2023-02-16 16:01:35
我正在嘗試找出一種設計模式(如果存在的話)用于我將在一堆類中重新執行某些功能的情況。以下是我面臨的問題的(簡化)概述:我有一些 Java 代碼來創建、更新、刪除Student對象、Professor對象和Staff對象。每次創建、刪除或更新此類對象時,我都想提取有關受影響對象的一些信息(例如姓名、年齡、ID)并通知外部服務。所以像:class StudentDAO { public Student createStudent(Student studentToCreate) { jdbcTemplate.update(INSERT_SQL, .....); //===> extract some info of the student //let external service know a student was created.... } public Student deleteStudent(Student studentToDelete) { jdbcTemplate.update(DELETE_SQL, .....); //===> extract some info of the student //let external service know a student was deleted.... } //same thing for update}class ProfessortDAO { public Professor createProfessor(Professor professorToCreate) { jdbcTemplate.update(INSERT_SQL, .....); //===> extract some info of the professor //let external service know a Professor was created.... } public Student deleteProfessor(Professor professorToDelete) { jdbcTemplate.update(DELETE_SQL, .....); //===> extract some info of the professor //let external service know a professor was deleted.... } //same thing for update}//repeat for Staff該示例有點做作,但假設Student, Professor,Staff沒有共同的超類型。有沒有一種方法可以實現此功能,而無需復制和粘貼用于提取信息的邏輯并將其發送到所有 DAO 類的 CREATE、DELETE、UPDATE 方法中?
3 回答

慕勒3428872
TA貢獻1848條經驗 獲得超6個贊
您應該搜索通用存儲庫。您可以在這里了解更多信息:
https://www.youtube.com/results?search_query=generic+repository+java
示例代碼:
class Reposiory<T> {
public T create(T Create) {
jdbcTemplate.update(INSERT_SQL, .....);
}
public T delete(T Delete) {
jdbcTemplate.update(DELETE_SQL, .....);
}
}

搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
沒有太多信息可以繼續,但您是否考慮過使用generics
特定類型并實施 an來定義您希望從每種類型的個人訪問的interface
公共信息?(phone, name, id)
您還應該能夠將操作(DELETE, ADD, UPDATE)
作為參數傳遞。我建議enum
為此使用 an 。

胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
創建 ReportExternalService 接口并添加關鍵屬性,如果對象需要通知,則實現此接口。
創建一個以 ReportExternalService 為參數的方法,并使用 key 向外部服務報告。!
添加回答
舉報
0/150
提交
取消