В моем приложении у меня есть сценарий, в котором, если в определенном модуле происходит изменение, об этом необходимо уведомить несколько других модулей. Я подумал, что здесь подойдет шаблон наблюдателя, сохраняя модуль, в котором будет происходить изменение, как субъект, а модули, которые должны быть уведомлены, как наблюдатели.
Но, следуя принципу шаблона наблюдателя, наблюдатели независимы друг от друга. Между наблюдателями не должно быть никакой связи. В моем случае модули хоть и разные, но зависимые. Успешное завершение выполнения первого модуля важно для выполнения следующего модуля. Кроме того, если модуль x выйдет из строя, все изменения, внесенные модулем 1 в модуль x-1, должны быть отменены. То есть либо все модули должны успешно выполниться, либо мы должны откатиться к предыдущему состоянию. Вы можете представить это как транзакцию. Затем я понял, что был неправ, что шаблон наблюдателя — неправильный способ реализовать это.
Я как бы застрял здесь, чтобы придумать чистый дизайн, в котором есть набор модулей, которые необходимо обрабатывать, когда происходит изменение темы, но с ограничением модули зависят друг от друга. Может ли кто-нибудь помочь мне с этой проблемой, чтобы придумать хороший дизайн?