Я пытаюсь выяснить шаблон проектирования, который можно использовать (если таковой существует) в ситуации, когда я буду перерабатывать некоторые функции для нескольких классов.Ниже приведен (упрощенный) обзор проблемы, с которой я столкнулся:
У меня есть некоторый Java-код для CREATE, UPDATE, DELETE Student
объектов, Professor
объектов и & Staff
объектов.И каждый раз, когда такой объект создается, удаляется или обновляется, я хочу извлечь некоторую информацию о затронутом объекте (например, имя, возраст, идентификатор) и уведомить внешнюю службу.Так что-то вроде:
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?