我正在尝试找出一种设计模式(如果存在的话)用于我将在一堆类中重新执行某些功能的情况。以下是我面临的问题的(简化)概述:我有一些 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
提交
取消