Можно сказать, что паттерн Observer состоит из двух модулей (может быть, это зависит от контекста)?
подумайте: Subject — это другой модуль, Observer — это другой модуль (и они связаны друг с другом. Ну, мы знаем это из шаблона).
Можно сказать, что паттерн Observer состоит из двух модулей (может быть, это зависит от контекста)?
подумайте: Subject — это другой модуль, Observer — это другой модуль (и они связаны друг с другом. Ну, мы знаем это из шаблона).
Паттерн наблюдателя может быть как одномодульным, так и двухмодульным. Это не конкретно так. Но шаблон наблюдателя в основном полезен, когда два связанных класса находятся в разных модулях или подсистемах. Более того, он используется для уменьшения взаимосвязи между классами и позволяет объектам взаимодействовать друг с другом, не зная классов других объектов.
По моему мнению, вы уже могли изучить эту картинку. Здесь Subject и Observer — это два разных класса или модуля. Observer — это в основном абстрактный класс, а ConcreteObserverA и ConcreteObserverB реализуют метод notify() класса Observer для уведомления соответствующих наблюдателей. Точно так же класс Subject может обрабатывать методы, подобные показанным на рисунке. Класс субъекта обычно содержит информацию для уведомления наблюдателя.
Таким образом, вы можете разделить модули.
Кроме того, вы можете узнать больше о шаблоне Observer из книги Тимоти К.Летбриджа и Роберта Ланьера "Объектно-ориентированная разработка программного обеспечения".