观察者模式

核心概念

主题接口:具有状态,维持一个list,其中存放观察者,当状态变化时候通知观察者执行

观察者接口:收到主题的通知后,执行相应的方法

具体主题实现类

具体观察者发实现类

核心思想

主题状态改变,通知所有的监听者

观察者模式的核心思想就是一个主题状态改变时,会通知所有注册的观察者。主题维护一个观察者列表,当主题的状态发生变化时,会遍历观察者列表并调用每个观察者的更新方法,以便观察者能够获取最新的状态信息并执行相应的操作。

class ConcreteSubject implements Subject {
    private int state;
    private List<Observer> observers = new ArrayList<>();

    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update(state);
        }
    }

    public void setState(int state) {
        this.state = state;
        notifyObservers();
    }
}

监听者根据主题状态,做出相应行为

观察者的更新方法通常包含一个参数,该参数是主题的状态信息。观察者通过检查这个状态信息,可以根据具体的业务逻辑执行相应的操作。

class ConcreteObserver implements Observer {
    private String name;

    public ConcreteObserver(String name) {
        this.name = name;
    }

    @Override
    public void update(int state) {
        if (state > 5) {
            System.out.println(name + " received update and is taking action: High state detected.");
            // 执行高状态的操作
        } else {
            System.out.println(name + " received update and is taking action: Normal state detected.");
            // 执行正常状态的操作
        }
    }
}

观察者模式的优点

松耦合可重用:观察者模式的目的就是让主题和观察者之间的关系更加松散,使得它们可以独立地演进和变化。

分布式事件处理: 观察者模式常被用于实现分布式事件处理系统。主题和观察者可以在不同的系统或模块中,通过事件的方式进行通信,从而支持分布式系统的协作。

事件驱动架构: 观察者模式是事件驱动架构的基础。通过观察者模式,可以构建灵活的事件系统,支持异步事件处理,提高系统的响应性和扩展性。

相关推荐
yuanpan1 天前
23种设计模式之《观察者模式(Observer)》在c#中的应用及理解
观察者模式·设计模式·c#
攻城狮7号2 天前
【第16节】C++设计模式(行为模式)-Observer(观察者)模式
c++·观察者模式·设计模式
知行022 天前
23中设计模式之观察者模式
java·观察者模式·设计模式
码熔burning5 天前
(十 八)趣学设计模式 之 观察者模式!
java·观察者模式·设计模式
_真相只有一个7 天前
行为型模式 - 观察者模式 (Publish/Subscribe)
观察者模式·设计模式
小王子10249 天前
设计模式Python版 观察者模式(上)
python·观察者模式·设计模式
Duramentee9 天前
C++ 设计模式 十九:观察者模式 (读书 现代c++设计模式)
c++·观察者模式·设计模式
千里码!9 天前
java23种设计模式-观察者模式
观察者模式·设计模式
Nita.12 天前
设计模式| 观察者模式 Observer Pattern详解
观察者模式·设计模式·c#
咸鱼过江13 天前
观察者模式说明(C语言版本)
c语言·观察者模式