ПАТТЕРН 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

Реклама
Новое
Реклама