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

发布于:2024-04-20 ⋅ 阅读:(18) ⋅ 点赞:(0)

目录

1.使用场景

2.什么是观察模式

3.观察者模式结构图

4.代码实现案例

4.1 subject代码实现

4.2 Observer类代码实现

5. 回顾总结


1.使用场景

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

2.什么是观察模式

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

3.观察者模式结构图

4.代码实现案例

4.1 subject代码实现
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类代码实现
public abstract class Observer {

    public abstract void update();
}

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

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

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

5. 回顾总结

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