Pushing an event or new information to Observers is
the most common implementation for this pattern.
maintains a list of Observers
, including methods to add and optionally remove Observers
When a Stimulus
is received (or when the Subject
produces its own stimulus), the Subject
notifies all Observers
about the new information.
Observers pull events or new information from Subjects
when it is expensive to push that information to all Observers.