ПАТТЕРН OBSERVER DELPHI
Паттерн Observer в программировании на Delphi используется для создания связи между объектами. Этот паттерн позволяет одному объекту наблюдать за изменениями, происходящими в другом объекте и получать соответствующие уведомления. Наблюдаемый объект содержит список ссылок на объекты-наблюдатели. Когда наблюдаемый объект изменяется, он оповещает всех своих наблюдателей о произошедших изменениях.
type IObserver = interface ['{9A06FD62-56FD-4356-A31B-45DBC03ED50E}'] procedure Update(const ASubject: TObject); end; ISubject = interface ['{4FF2E06A-D282-423A-9B91-90ECAA8AE743}'] procedure RegisterObserver(const AObserver: IObserver); procedure RemoveObserver(const AObserver: IObserver); procedure NotifyObservers; end; TSubject = class(TInterfacedObject, ISubject) private FObservers: TInterfaceList; public constructor Create; destructor Destroy; override; procedure RegisterObserver(const AObserver: IObserver); procedure RemoveObserver(const AObserver: IObserver); procedure NotifyObservers; end;
В приведенном примере класс TSubject реализует интерфейс ISubject, который содержит методы регистрации наблюдателей, удаления наблюдателей и оповещения наблюдателей. В методах RegisterObserver и RemoveObserver происходит добавление и удаление ссылок на объекты-наблюдатели в списке FObservers. Метод NotifyObservers оповещает всех наблюдателей об изменении объекта.
Для использования паттерна Observer необходимо создать классы-наблюдатели, реализующие интерфейс IObserver. Каждый класс-наблюдатель содержит метод Update, который вызывается при получении уведомления об изменении объекта. Если необходимо получить какие-то конкретные данные об объекте, можно передать его в параметрах метода Update.
type TObserver = class(TInterfacedObject, IObserver) private FName: string; public constructor Create(const AName: string); procedure Update(const ASubject: TObject); end;
В данном примере создается класс TObserver, реализующий интерфейс IObserver. В конструкторе класса TObserver задается имя объекта-наблюдателя, которое будет выводиться при изменении объекта. Метод Update выводит сообщение об изменении объекта и его текущее состояние (если это необходимо).
Observer Pattern – Design Patterns (ep 2)
Delphi Observer Design Pattern
C++ : Observer Pattern Via Boost Signal2
Design Patterns in Plain English - Mosh Hamedani
Bienestar Físico y Emocional - Aprende a Escuchar tu Cuerpo 💁📢
Observer Design Pattern
The Observer Pattern Explained and Implemented in Java - Behavioral Design Patterns - Geekific
C++ : Observer pattern using weak_ptr
Curso de Patrones de diseño - 11 Observador (Observer)
Design Patterns: Obsevers