In object-oriented architectures, the developer works hard to create a set of decoupled entities. In this way, entities can be tested, reused, and maintained without interfering with the whole system. Designing this kind of system brings a tricky side effect: maintaining consistency between related objects.
The first example of a pattern created to solve this issue was in the Smalltalk Model-View-Controller architecture. The user interface framework provided a way to keep UI elements separated from the actual object containing the data, and, at the same time, it provided a handy way to keep everything in sync.
The Observer pattern is one of the most famous design patterns discussed in the popular Design Patterns: Elements of Reusable Object-Oriented Software by The Gang of Four. It's a behavioral pattern and it provides a way to bind objects in a one-to-many dependency: when one object changes, all the objects depending on it are notified and updated automatically...