所有分类
  • 所有分类
  • 未分类

观察者模式概述

观察者模式是很重要、很常用的设计模式,必须要掌握。

B站视频:【Java设计模式实战】观察者模式!项目应用,真优雅~_哔哩哔哩_bilibili

观察者模式的含义

观察者模式又称发布-订阅模式。观察者模式是一种通知机制,多个观察者对某个事物(被观察方)感兴趣时,事物(被观察方)一有动作就通知观察者。观察者模式能让发送通知的一方(被观察方)和接收通知的一方(观察者)彼此分离,减少耦合。

以生活中的微信公众号为例:我们对某个微信公众号感兴趣,关注了这个微信公众号后能收到新的文章的通知,了解最新的资讯。这是一种典型的观察者模式,用户(观察者)关注公众号(被观察者),公众号(被观察者)更新文章通知所有用户(观察者)。

以项目中的实际场景为例:在取消订单的时候,后边要跟一系列操作,比如:增加对应商品的库存、增加对应用户的账户余额。这里用观察者模式就很合适,取消订单这个动作是个被观察者,库存业务和余额业务都是观察者。

模式的角色

  1. 抽象被观察者角色(Subject)   //也就是一个抽象主题
    1. 它把所有观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。
    2. 向主题提供一个接口,可以增加和删除观察者角色。
    3. 一般用一个抽象类或接口来实现。
  2. 抽象观察者角色(Observer)
    1. 为所有的具体观察者定义一个接口,在得到主题通知时更新自己。
  3. 具体被观察者角色(ConcernSubject)
    1. 也就是一个具体的主题,在集体主题的内部状态改变时,观察者会发出通知。
  4. 具体观察者角色(ConcernObserver)
    1. 实现抽象观察者角色所需要的接口,使本身的状态与主题的状态相协调

上边这个角色是理想的状态,实际可能会有所变化,比如:有时候不需要抽象被观察者。

观察者模式Java实战

观察者模式Java实战–写法1:手动注册 – 自学精灵

观察者模式Java实战–写法2:JDK – 自学精灵

观察者模式Java实战–写法3:Spring的事件 – 自学精灵

观察者模式Java实战–写法4:注入接口 – 自学精灵(最推荐的写法)

3

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录