Observer Pattern
The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods.
interface IObserver<T> {
update(...data: T[]): void;
}
interface ISubject<T> {
observers: IObserver<T>[];
addObserver(observer: IObserver<T>): void;
removeObserver(observer: IObserver<T>): void;
}
The following components currently use the observer pattern: