项目中的解耦小能手-观察者模式

目录

1.使用场景

2.什么是观察模式

3.观察者模式结构图

4.代码实现案例

[4.1 subject代码实现](#4.1 subject代码实现)

[4.2 Observer类代码实现](#4.2 Observer类代码实现)

[5. 回顾总结](#5. 回顾总结)


1.使用场景

当一个对象的改变需要同事改变其他对象的时候,如:订单中心-下单成功需要通知库存、物流和积分去做相应的处理。这个时候就可以使用观察者模式。

2.什么是观察模式

观察者模式又叫发布-订阅模式(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同事监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,是它们能够更新自己。

3.观察者模式结构图

4.代码实现案例

4.1 subject代码实现
java 复制代码
public abstract class Subject {
   private List<Observer> observers = new ArrayList<>();


   public void attach(Observer observer) {
        observers.add(observer);
   }

    public void detach(Observer observer) {
        observers.remove(observer);
   }
   
   public void notify() {

       for(Observer observer: observers) {
           observer.update();
       }
   }
    
}
4.2 Observer类代码实现
java 复制代码
public abstract class Observer {

    public abstract void update();
}

code和观察者之间存在一定的关联性。观察者模式是一种设计模式,它用于在对象之间定义一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖它的对象都能够得到通知并自动更新。在观察者模式中,观察者对象会注册到被观察的主题对象上,当主题对象的状态发生变化时,会通知所有的观察者对象进行相应的处理。

在编程中,可以通过定义观察者接口和实现类来创建观察者对象,并将其注册到被观察的对象上。当被观察对象的状态发生变化时,会调用观察者对象的相应方法进行处理。这样,观察者对象就可以根据被观察对象的变化来做出相应的响应。

因此,code和观察者之间存在关联性,通过观察者模式可以实现code对观察者进行通知和更新。这种关联性可以帮助我们实现一些具有实时性要求的功能,例如事件驱动的系统、UI界面的更新等。

5. 回顾总结

观察者模式所做的工作就是解耦合,让耦合双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响另一边的变化。

相关推荐
zh路西法1 天前
【C++委托与事件】函数指针,回调机制,事件式编程与松耦合的设计模式(上)
开发语言·c++·观察者模式·设计模式
zh路西法2 天前
【C++委托与事件】函数指针,回调机制,事件式编程与松耦合的设计模式(下)
c++·观察者模式·设计模式
咸鱼过江4 天前
openharmony中HDF驱动框架关键流程说明-观察者模式
观察者模式·harmonyos·hdf框架
強云4 天前
23种设计模式 - 观察者模式
观察者模式·设计模式
鎈卟誃筅甡8 天前
JavaScript设计模式 -- 观察者模式
观察者模式·设计模式
添砖Java中8 天前
深度剖析观察者模式:从理论到实战的Java实现
java·开发语言·spring boot·分布式·观察者模式·maven
楼台的春风9 天前
C++实用技巧之 --- 观察者模式详解
c++·程序人生·算法·观察者模式·设计模式·嵌入式·学习方法
FLZJ_KL10 天前
【设计模式】【行为型模式】观察者模式(Observer)
java·观察者模式·设计模式
艾斯特_11 天前
前端设计模式介绍及案例(单例模式、代理模式、工厂模式、装饰者模式、观察者模式)
前端·javascript·观察者模式·单例模式·设计模式
运筹帷幄小红花14 天前
观察者模式(Observer)
观察者模式