C++设计模式笔记——观察者模式

本文介绍了观察者模式的概念、代码实现、优缺点及适用环境。观察者模式是一种行为型设计模式,用于定义对象间的一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新。代码示例展示了抽象观察者、具体观察者、抽象目标和具体目标的定义。观察者模式适用于需要广播通信和消息更新通知的场景,但可能引发循环依赖和性能问题。
摘要由CSDN通过智能技术生成

概念

观察者模式又被称为发布-订阅模式(Publish-Subscribe)、模型-视图模式(Model-View)、源-监听器模式(Source-Listener)、从属者模式(Dependents)。

它属于行为型模式的一种。

观察者模式:定义对象之间一对多的依赖关系,使得一个对象的状态发生改变时,它的关联对象都得到通知并被自动更新。

一个对象状态改变时(目标对象Subject),所有依赖他的对象(观察者对象Observer)都得到通知并能够发生改变。

Subject(目标):是被观察的对象,目标中定义了一个观察者的集合,即一个目标可能会有多个观察者,通过attach()和detach()方法来增删观察者对象。目标声明了通知方法notify(),用于在自身状态发生改变时通知观察者。
ConcreteSubject(具体目标):具体目标实现了通知方法notify(),同时具体目标有记录自身状态的属性和成员方法;
Observer(观察者):观察者将对接收到的目标发生改变的通知做出自身的反应,抽象层声明了更新方法update();
ConcreteObserver(具体观察者): 实现了更新方法update(),具体观察者中维护了一个具体目标对象的引用(指针),用于存储目标的状态。


观察者模式是使用频率非常高的一个设计模式,特别是在UI更新上。凡是涉及一对多的对象交互场景,都可以使用观察者会模式。比如购物车,用户往购物车里

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值