设计模式之观察者模式

定义

        当有一系列的对象都依赖某个特定对象的状态改变时,我们就可以使用观察者模式。观察者的框架如下:

根据上面框架可知,观察者模式在目标的主题对象和依赖对象(观察者)之间定义一个一对多的关系。当目标主体对象的状态发生变化时,依赖的对象将自动更新/通知。

具体实现

为了实现观察者模式,主题对象主要需要做如下几个操作:

  • 定义了一个统一的观察者对象实例描述结构体

一个观察者对象实例描述结构体通常需要包括观察者对象的名称和对应的操作接口。通常采用链表的形式连接所有的观察者对象,所以对应的描述结构体也需要包含链表的前后指针。另外,我们的观察者对象有时候只有在一定条件下才通知,因此描述结构体中通常也会包含相应的判断条件。一个观察者对象实例描述结构体例子如下:

  • 提供观察者注册函数

        观察者需要提供一个统一的注册函数,这样任何需要加入观察者的业务模块都可以调用。常见的注册函数形式如下:

  • 状态变化时通知到所有观察者

        当主题状态发生变化时,将通知到所有的观察者。观察者本身也可以设置条件,只有在满足一定条件时才选择接受通知。相关的流程示例如下:

 模式优点

        观察者模式可以有效简化主流程通知逻辑,而且后续如果需要新增观察者的话只需要实例化对象并注册即可,不需要改动主流程逻辑,提高了系统的稳定性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值