【设计模式】【行为型】【观察者模式】Observer Design Pattern

观察者模式(Observer Design Pattern)

观察者模式(Observer Design Pattern)也被称为发布订阅模式(Publish-Subscribe Design Pattern)

在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。

原理及应用场景剖析

  • 被依赖的对象叫作被观察者(Observable),依赖的对象叫作观察者(Observer)。
  • 设计模式要干的事情就是解耦。创建型模式是将创建和使用代码解耦,结构型模式是将不同功能代码解耦,行为型模式是将不同的行为代码解耦,具体到观察者模式,它是将观察者和被观察者代码解耦。

基于不同应用场景的不同实现方式

  • 同步阻塞的实现方式
  • 异步非阻塞的实现方式
    • 简单一点的做法是,在每个 handleRegSuccess() 函数中,创建一个新的线程执行代码。
    • 基于 EventBus 来实现
  • 进程内的实现方式
  • 跨进程的实现方式
    • 如果用户注册成功之后,我们需要发送用户信息给大数据征信系统,而大数据征信系统是一个独立的系统,跟它之间的交互是跨不同进程的,那如何实现一个跨进程的观察者模式呢?如果大数据征信系统提供了发送用户注册信息的 RPC 接口,我们仍然可以沿用之前的实现思路,在 handleRegSuccess() 函数中调用 RPC 接口来发送数据。但是,我们还有更加优雅、更加常用的一种实现方式,那就是基于消息队列(Message Queue,比如 ActiveMQ)来实现。
    • 而基于消息队列的实现方式,被观察者和观察者解耦更加彻底,两部分的耦合更小。被观察者完全不感知观察者,同理,观察者也完全不感知被观察者。被观察者只管发送消息到消息队列,观察者只管从消息队列中读取消息来执行相应的逻辑。

异步非阻塞观察者模式的简易实现

  • 框架的作用有:隐藏实现细节,降低开发难度,做到代码复用,解耦业务与非业务代码,让程序员聚焦业务开发。

EventBus 框架功能需求介绍

上一篇:Spring笔记前四天


下一篇:Zookeeper集群详解