How to Implement the Observer Pattern

126 views

How to Implement the Observer Pattern

How to Implement the Observer Pattern

What is the Observer pattern, and how can it be implemented in Python?

solveurit24@gmail.com Changed status to publish February 20, 2025
0

Observer pattern allows an object (subject) to notify its dependents (observers) of changes in its state.

Code:

class Subject:
    def __init__(self):
        self.observers = []
    
    def attach(self, observer):
        self.observers.append(observer)
    
    def notify(self):
        for observer in self.observers:
            observer.update(self)

class Observer:
    def update(self, subject):
        pass

class ConcreteSubject(Subject):
    def __init__(self):
        super().__init__()
        self._state = 0

    @property
    def state(self):
        return self._state

    @state.setter
    def state(self, value):
        self._state = value
        self.notify()

class ConcreteObserver(Observer):
    def update(self, subject):
        print(f"Observer: Subject's state changed to {subject.state}")

subject = ConcreteSubject()
observer1 = ConcreteObserver()
observer2 = ConcreteObserver()

subject.attach(observer1)
subject.attach(observer2)

subject.state = 10  # Output: Observer: Subject's state changed to 10

solveurit24@gmail.com Changed status to publish February 20, 2025
0