设计模式之 - 观察者模式

本文从现实生活中警匪片中的观察者模式实例引入,详细解释了观察者模式的定义,即一种一对多的依赖关系,当对象状态改变时,所有依赖它的对象都会得到通知并自动更新。接着介绍了观察者模式的四个核心角色:抽象目标角色、抽象观察者角色、具体目标角色和具体观察者角色,并以博客订阅为例,生动展示了该模式的应用。此外,还探讨了模式的实现和使用场景。
摘要由CSDN通过智能技术生成

一、引子

        还记得警匪片上,匪徒们是怎么配合实施犯罪的吗?一个团伙在进行盗窃的时候,总有一两个人在门口把风——如果有什么风吹草动,则会立即通知里面的同伙紧急撤退。也许放风的人并不一定认识里面的每一个同伙;而在里面也许有新来的小弟不认识这个放风的。但是这没什么,这个影响不了他们之间的通讯,因为他们之间有早已商定好的暗号。上面提到的放风者、偷窃者之间的关系就是观察者模式在现实中的活生生的例子。

二、定义

        观察者( Observer)模式又名发布-订阅( Publish/Subscribe)模式。 GOF 给观察者模式如下定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

        可以举个博客订阅的例子,当博主发表新文章的时候,即博主状态发生了改变,那些订阅的读者就会收到通知,然后进行相应的动作,比如去看文章,或者收藏起来。博主与读者之间存在种一对多的依赖关系。

三、结构

        下面我们就来看看观察者模式的组成部分。

1) 抽象目标角色( Subject):目标角色知道它的观察者,可以有任意多个观察者观察同一个目标。并且提供注册和删除观察者对象的接口。目标角色往往由抽象类或者接口来实现。

2) 抽象观察者角色( Observer):为那些在目标发生改变时需要获得通知的对象定义一个更新接口。抽象观察者角色主要由抽象类或者接口来实现。

3) 具体目标角色&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值