Intent: Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automagically.

The Subject object registers/removes Observers via its Attach and Detach methods and notifes them of state changes through its Notify method that calls the Update method of each Observer.
The Observers implement their reactions to the a state change in their Update method.