How you would you describe the Observer pattern in beginner language?

Check out "Head First: Design Patterns" for some really, smack-your-forehead easy to follow descriptions of the major patterns.

For Observer it is important to understand that it describes a one-to-many relationship and uses a subscription model for telling other classes when there has been a change. RSS, Atom, and Twitter work along these lines.


The best example I can come up with is that of a mailing list (as an example).

You, the observer, subscribe to a mailing list and you observe the list. When you are no longer interested in the list, you unsubscribe.

This concept is the observer pattern. Two or more classes are involved. One or more class, subscribes to a publisher class (there are different names) and then the first class (and every subscribing class) will get notified when ever the publisher desires.

This is how I explained it to my wife, who often listens to my rantings about programming and design theory. It made sense to her. I realize this might be too simple for you but is a good start...

Regards,
Frank


The Observer wants to know when anything changes, so it subscribes to the Subject. The Subject does not know the Observer. This is the important part. The Subject just defines the Interface (or delegate) the Observer needs to provide, and allows the registration.

In short: The Observer pattern allows your observer to be called from a subject, that does not care who the observer is and if it even exists.