一篇文章带你搞懂“设计模式”! - - 观察者模式(17)

📅 发布时间:2026/7/16 9:02:58 👁️ 浏览次数:
一篇文章带你搞懂“设计模式”! - - 观察者模式(17)
观察者模式观察者模式是一种行为型设计模式又被称为发布-订阅模式它定义了对象之间的一对多的依赖关系当一个对象的状态发生变化时所有依赖于它的对象都会收到通知并自动更新。观察者模式的关注点是对象之间的通信以及被观察对象的状态。观察者模式工作原理核心成员被观察者(Subject)被观察的对象它的内部包含了观察者对象的集合并提供了添加、通知和删除观察者对象的统一接口。观察者(Observer)接收Subject通知的对象它订阅了Subject的状态并提供了更新操作的统一接口。具体的被观察者(ConcreteSubject)包含Subject类接口的具体实现维护了观察者的列表自身状态发生变化时通知所有的观察者。具体的观察者(ConcreteObserver)包含Observer类接口的具体实现提供了更新操作的具体实现细节一旦收到Subject的通知便进行更新操作。观察者模式工作流程被观察者维护一个观察者的列表并提供了管理和通知观察者的方法。观察者与被观察者绑定(attach)并将自己添加到观察者列表中。当被观察者的状态发生变化时开始通知观察者通知的方式一般是遍历观察者列表遍历时会调用每个观察者的更新方法。观察者完成具体的更新操作。观察者模式优缺点观察者模式的优点符合开闭原则的要求。支持广播的通信方式。支持事件驱动编程。可以动态添加观察者代码扩展性好。观察者模式的缺点每次状态变化都要遍历所有观察者性能开销大。每次状态变化都要通知所有的观察者通信时间变长。观察者数量过多会使代码的可读性变差。当有多个客户端操作观察者的删除时会带来数据安全问题。