ПАТТЕРН НАБЛЮДАТЕЛЬ PYTHON

Паттерн Наблюдатель (Observer) в Python позволяет определять зависимость типа один-ко-многим между объектами таким образом, что при изменении состояния одного объекта, все зависимые от него объекты оповещаются об этом и автоматически обновляются.

Для реализации паттерна необходимо создать две основные сущности: <Subject> и <Observer>. Subject представляет некий объект, состояние которого может изменяться и на которое могут быть подписаны другие объекты – наблюдатели. Observer, в свою очередь, представляет объект, который хочет наблюдать за состоянием объекта Subject.

Пример кода реализации паттерна:

class Subject: def __init__(self): self.__observers = [] def register(self, observer): self.__observers.append(observer) def notifyAll(self, *args, **kwargs): for observer in self.__observers: observer.notify(self, *args, **kwargs)class Observer1: def __init__(self): pass def notify(self, subject, *args): print(type(self).__name__, subject.getState(), *args)class Observer2: def __init__(self): pass def notify(self, subject, *args): print(type(self).__name__, subject.getState(), *args)class Subject: def __init__(self): self.__observers = [] self.__state = 0 def getState(self): return self.__state def setState(self, arg): self.__state = arg self.notifyAll() def register(self, observer): self.__observers.append(observer) def notifyAll(self, *args, **kwargs): for observer in self.__observers: observer.notify(self, *args, **kwargs)

Как видно из кода, мы определили наблюдателей Observer1 и Observer2, а также субъект Subject, который может отправлять уведомления о своем состоянии, на которые будут реагировать определенные наблюдатели.

Таким образом, паттерн Наблюдатель позволяет создать гибкой систему взаимодействия между объектами, где каждый объект может изменять свое состояние независимо, а другие объекты будут автоматически уведомляться об этом и реагировать соответствующим образом.

Паттерн Observer на Python

Шаблон проектирования Наблюдатель / Observer

Design Patterns em Python - Observer

Python. Паттерн проектирования программ \

Observer Pattern – Design Patterns (ep 2)

Python - OOP - Observer Pattern

Observer Pattern - Event Driven Design in Python - Intermediate OOP

BLGPG-8AEA8A6DB922-24-09-20-01

Новые материалы: