Observer pattern

The Observer pattern defines a one-to-many dependency between objects
so that when one object changes state, all its dependents are notified
and updated automatically.