Subscribe to object changes
The Observer Design pattern, is a very simple yet powerful pattern.
We can use it when we want, for example, to update a UI when an object of our application changes its state.
So we have:
- a SUBJECT: the Thing we want to observe
- a set of OBSERVERS, which are updated when the subjects changes its state
When the subject changes its state, it notifies, to all subscribed observable, that he changed its state, and all the observers added to the subject gets updated,
That is pretty much how it works when someone updates its twitter with a new tweet! all its followers get updated with a notification
When data changes, we want the UI to reflect the new state
- Define a one-to-many dependency between objects
- When one object changes state, all its dependents are notified and updated automatically.
- Use : Change one object -> change others
- No idea how many objects need to be changed
- Object change notification, with preserving loose coupling
- One object may notify another without knowing them directly
- Loose coupling between observers and subjects
- Supporting a broadcast model
- One change can result in multiple unnecessary notifications
- Clients don't know the ripple effects
- Preserve loose coupling
- Observe state in other objects, then notify when state changes
Now lets take a look at the Structure of this pattern when we want to implement it
And lets take a look at the Collaboration among them
This pattern is very simple and it could be useful when we want to observe the same thing from different points of our application!