From 312cbe22bc75d41857a76b3d2ebd9f4fc5786cff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sun, 24 Aug 2014 23:17:26 +0300 Subject: [PATCH] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) 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.