The Observer pattern:
Defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
The Mediator pattern:
Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.
Source: dofactory
Example:
The observer pattern:
Class A, can have zero or more observers of type O registered with it. When something in A is changed it notifies all of the observers.
The mediator pattern:
You have some number of instances of class X (or maybe even several different types:X, Y & Z), and they wish to communicate with each other (but you don't want each to have explicit references to each other), so you create a mediator class M. Each instance of X has a reference to a shared instance of M, through which it can communicate with the other instances of X (or X, Y and Z).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…