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

目录

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. 回顾总结

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

相关推荐
宁静致远20215 天前
【C++设计模式】第三篇:观察者模式(别名:发布-订阅模式、模型-视图模式、源-监听器模式)
c++·观察者模式·设计模式
xiaopengbc5 天前
在 Python 中实现观察者模式的具体步骤是什么?
开发语言·python·观察者模式
长沙红胖子Qt6 天前
VTK开发笔记(五):示例Cone2,熟悉观察者模式,在Qt窗口中详解复现对应的Demo
qt·观察者模式·vtk·回调
xiaowu0809 天前
观察者模式-红绿灯案例
观察者模式
mask哥11 天前
DP-观察者模式代码详解
java·观察者模式·微服务·设计模式·springboot·设计原则
##学无止境##18 天前
Java设计模式-观察者模式
java·观察者模式·设计模式
我不是程序猿儿22 天前
【C#】观察者模式 + UI 线程调度、委托讲解
观察者模式·ui·c#
饕餮争锋1 个月前
设计模式笔记_行为型_观察者模式
笔记·观察者模式·设计模式
melonbo1 个月前
中介者模式和观察者模式的区别是什么
观察者模式·中介者模式
源代码•宸1 个月前
深入浅出设计模式——行为型模式之观察者模式 Observer
开发语言·c++·经验分享·观察者模式·设计模式·raii