观察者模式是一种平时接触较多的模式。它主要用于一对多的通知发布机制,当一个对象发生改变时自动通知其他对象,其他对象便做出相应的反应,同时保证了被观察对象与观察对象之间没有直接的依赖。
GOF对观察者模式的描述为:
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically…
— Design Patterns : Elements of Reusable Object-Oriented Software
观察者模式的适用场景
- 当存在一类对象通知关系上依赖于另一类对象的时候,把它们进行抽象,确保两类对象的具体实现都可以相对独立的变化,但它们交互的接口保持稳定。
- 一个类型状态变化时,需要通知的对象的数量不固定,会有增加或删除若干被通知对象的情况。
- 需要让目标对象与被通知对象之间保持松散耦合的时间。
UML类图如下:
代码实例
public interface IObserver<T>
{
void Update(SubjectBase<T> subject);
}
public abstract class SubjectBase<T>
{
protected IList