"""
===========================================
Abstract Classes
===========================================
"""
import abc
[docs]class Monitor:
"""
Abstract class to monitor the observers.
Methods to:
1. Add observers
2. Remove observers
3. Get the list of registered observers
4. Notify the observers when there is a change in the monitored parameters.
"""
@abc.abstractmethod
[docs] def add_observer(self, observer):
raise NotImplementedError
@abc.abstractmethod
[docs] def remove_observer(self, observer):
raise NotImplementedError
@abc.abstractmethod
[docs] def notify_observers(self):
raise NotImplementedError
@abc.abstractmethod
[docs] def get_registered_observers(self):
raise NotImplementedError
[docs]class Observer:
"""Abstract class to describe and update the state of an observer."""
[docs] _description = NotImplementedError
@abc.abstractmethod
[docs] def update(self, parameters):
raise NotImplementedError
[docs] def get_description(self):
return self._description
[docs]class Display:
"""
Abstract class to create and update the displays attached to an observer.
"""
@abc.abstractmethod
[docs] def update_display(self, parameters, display_title):
raise NotImplementedError
[docs]class ObserverFactory:
"""
Abstract class for creating a factory to create new observers with a display attached to them.
The `display_object` stores a display class used to visualize an observer's parameters/states.
"""
@abc.abstractmethod
[docs] def create(self, observer, observer_name):
raise NotImplementedError