概念
观察者模式又被称为发布-订阅模式(Publish-Subscribe)、模型-视图模式(Model-View)、源-监听器模式(Source-Listener)、从属者模式(Dependents)。
它属于行为型模式的一种。
观察者模式:定义对象之间一对多的依赖关系,使得一个对象的状态发生改变时,它的关联对象都得到通知并被自动更新。
一个对象状态改变时(目标对象Subject),所有依赖他的对象(观察者对象Observer)都得到通知并能够发生改变。
Subject(目标):是被观察的对象,目标中定义了一个观察者的集合,即一个目标可能会有多个观察者,通过attach()和detach()方法来增删观察者对象。目标声明了通知方法notify(),用于在自身状态发生改变时通知观察者。
ConcreteSubject(具体目标):具体目标实现了通知方法notify(),同时具体目标有记录自身状态的属性和成员方法;
Observer(观察者):观察者将对接收到的目标发生改变的通知做出自身的反应,抽象层声明了更新方法update();
ConcreteObserver(具体观察者): 实现了更新方法update(),具体观察者中维护了一个具体目标对象的引用(指针),用于存储目标的状态。
观察者模式是使用频率非常高的一个设计模式,特别是在UI更新上。凡是涉及一对多的对象交互场景,都可以使用观察者会模式。比如购物车,用户往购物车里