diff --git a/README.md b/README.md index 3a6d5555e..a0be7bcac 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,13 @@ ##Observer **Intent:** Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. +![alt text](https://github.com/iluwatar/java-design-patterns/blob/master/observer/etc/observer.jpg "Observer") + +**Applicability:** Use the Observer pattern in any of the following situations +* when an abstraction has two aspects, one dependent on the other. Encapsulating these aspects in separate objects lets you vary and reuse them independently +* when a change to one object requires changing others, and you don't know how many objects need to be changed +* when an object should be able to notify other objects without making assumptions about who these objects are. In other words, you don't want these objects tightly coupled + ##State **Intent:** Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.