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

目录

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

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

相关推荐
老码观察9 天前
设计模式实战解读(四):观察者模式——事件驱动的解耦利器
观察者模式·设计模式·log4j
蜡笔小马10 天前
15.C++设计模式-观察者模式
c++·观察者模式·设计模式
天若有情67314 天前
自研极简C++软交互事件系统:干掉观察者模式、碾压前端事件机制
c++·观察者模式·交互·事件
c++之路16 天前
观察者模式(Observer Pattern)
java·网络·观察者模式
++==16 天前
设计模式:单例模式和观察者模式实现方式以及优化
观察者模式·单例模式·设计模式
快乐江湖19 天前
「八卦传播者」—— 观察者模式
观察者模式
多加点辣也没关系20 天前
设计模式-观察者模式
观察者模式·设计模式
heimeiyingwang1 个月前
【架构实战】状态机架构:订单/工单状态流转设计
观察者模式·架构·wpf
heimeiyingwang1 个月前
【架构实战】观察者模式在分布式系统中的应用
观察者模式·架构·wpf
geovindu1 个月前
go: Observer Pattern
开发语言·观察者模式·设计模式·golang