Design Patterns with Python Examples - Part 4
Overview: The Observer pattern defines a one-to-many relationship where changes in one object trigger updates in others.
Example Use Case: A stock market ticker that notifies multiple observers (apps, dashboards) of price updates.
class Subject:
def __init__(self):
self._observers = []
def attach(self, observer):
self._observers.append(observer)
def detach(self, observer):
self._observers.remove(observer)
def notify(self, data):
for observer in self._observers:
observer.update(data)
class StockObserver:
def __init__(self, name):
self.name = name
def update(self, price):
print(f"{self.name} received stock update: ${price}")
stock_ticker = Subject()
alice = StockObserver("Alice")
bob = StockObserver("Bob")
stock_ticker.attach(alice)
stock_ticker.attach(bob)
stock_ticker.notify(135.5)
stock_ticker.notify(140.0)
Why it’s useful: Ideal for event-driven systems where multiple components must stay in sync automatically.