Проектное решение для усложнения в дизайне наблюдателя в java - PullRequest
1 голос
/ 16 февраля 2020

У меня есть сущностная модель, определенная в POJO как

class A {
    B instance_b; 
}

class B {
    Collection<C> instance_c;
}

class C {}

Я реализовал шаблон наблюдателя, в котором есть 2 конкретных наблюдателя - JsonListener и DatabaseListener, которые используются для сериализации одноэлементного экземпляра класса A в json -файл (используя Джексона) и в дБ как json clob. У меня есть интерфейс LifeCycleManager с обычными методами register (), deregister () и notify () для добавления слушателей и их уведомления

Я написал конструктор для каждого из классов, чтобы изменить частные атрибуты (есть целенаправленно не определены никакие сеттеры). У строителя есть метод update (), с помощью которого я хочу неявно уведомить всех зарегистрированных слушателей.

Есть 2 запроса -

  1. Должен ли я реализовывать интерфейс LifeCycleManager для всех классов A, B, C, чтобы я мог вызвать метод notify () ? или есть альтернатива, где этого можно было бы избежать, так как это выглядит громоздко с ростом модели сущности.

  2. Поскольку я пишу в файл json, насколько я понимаю используя любую json -библиотеку, например, более быстрый xml .jackson, мне нужно перезаписать весь объект json (начиная с класса A) в файл json. Если мое понимание правильное, то, если я нахожусь в сборщике класса C и запускаю метод notify (), как я могу уведомить слушателей с экземпляром класса A? (в основном, как мне извлечь экземпляр A из класса C?), потому что просто обновление экземпляра класса C недостаточно хорошо - мне нужно соблюдать ассоциацию. Есть ли какой-то дизайн, который я могу использовать для этого?

Пожалуйста, советуйте или предлагайте, даже если это требует полной корректировки курса моей мысли.

Спасибо.

...