2022-02-25 20:03:36 +00:00
|
|
|
"""Module for Observable part of the Observer pattern functionality"""
|
2024-03-22 07:19:13 +00:00
|
|
|
|
2022-02-25 20:03:36 +00:00
|
|
|
from typing import List
|
|
|
|
from observer import Observer
|
|
|
|
|
|
|
|
|
|
|
|
class Observable:
|
|
|
|
"""Class implementing the Observable pattern"""
|
2022-11-30 05:19:17 +00:00
|
|
|
|
2022-02-25 20:03:36 +00:00
|
|
|
_observers: List[Observer] = []
|
|
|
|
|
|
|
|
def attach(self, observer: Observer):
|
|
|
|
"""Attaches an observer to an obserable object"""
|
|
|
|
self._observers.append(observer)
|
|
|
|
|
|
|
|
def detach(self, observer: Observer):
|
|
|
|
"""detaches an observer from an observable object"""
|
|
|
|
self._observers.remove(observer)
|
|
|
|
|
|
|
|
def notify(self, updated_object):
|
|
|
|
"""Notifies all observers with a given object parameter"""
|
|
|
|
for observer in self._observers:
|
|
|
|
observer.update(updated_object)
|