观察者模式

1.动机(解决的问题)

在软件构建过程中,我们经常需要,为一些对象建立与其相关对象的“通知依赖关系”,当该对象状态发生变化时,与其相关对象能及时接收到通知。如果这样的依赖关系过于紧密,将使软件不能很好的反应变化。需要有一种方式,能弱化这种依赖关系,使依赖关系更稳定,实现软件结构的松耦合。

2.模式概述:

定义了对象之间的一对多依赖,让多个观察者对象同时监听一个主题对象。这样以来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

3.实现方式:

  • 涉及四种角色:抽象主题(抽象被观察者)、具体主题(具体被观察者)、抽象订阅者(抽象观察者)、具体订阅者(具体观察者)
  1. 具体主题内部维护一个抽象订阅者列表,并对外提供订阅、取消订阅接口,供具体观察者调用。
  2. 当订阅者订阅时,主题将该订阅者添加到列表;当订阅者取消订阅时,主题将该订阅者移出列表。
  3. 当主题的状态发生变化时,遍历内部的订阅者列表,逐个通知到订阅者。

image

4.适用场景:

当一个对象状态的变化,需要其他一些对象作出相关反应,并且不关心其他对象反应的细节。

如:jdk中swing包的大量组件,都使用了观察者模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值