Observer

Origin: GoF 95
Reason: To establish dependencies between objects so that when one object changes state, its dependent objects are informed.
Synopsis: Define and implement interfaces with methods to register dependencies between objects and to notify dependent objects of state changes.
Example: In a security system objects that trigger alarms must notify objects that handle alarms, but at the same time they must be largely independent of each other.
Solution:
Observer There are both an interface and one or more implementing classes. The interface has an update method called by Observable objects when their state changes.
Observable There are both an interface and one or more implementing classes. The interface has methods to add and remove Observer objects whose update method is called upon a state change.
Multicaster This class manages the the registration of Observers on behalf of Observables.
See also: Delegation (Observables delegate functionality to Observers)
Adapter (used by non-conformant Observables and/or Observers)
Mediator (used to coordinate multiple state changes of Observables)
Note: The version described in this page is known as Event Delegation Model.