观察者模式

核心概念

主题接口:具有状态,维持一个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.");
            // 执行正常状态的操作
        }
    }
}

观察者模式的优点

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

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

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

相关推荐
青草地溪水旁6 天前
设计模式(C++)详解——观察者模式(Observer)(1)
c++·观察者模式·设计模式
星空寻流年6 天前
设计模式第六章(观察者模式)
网络·观察者模式·设计模式
大飞pkz6 天前
【设计模式】观察者模式
开发语言·观察者模式·设计模式·c#
charlie1145141918 天前
精读 C++20 设计模式:行为型设计模式——观察者模式
c++·学习·观察者模式·设计模式·程序设计·c++20
青草地溪水旁8 天前
设计模式(C++)详解——观察者模式(Observer)(2)
c++·观察者模式·设计模式
PaoloBanchero12 天前
Unity 虚拟仿真实验中设计模式的使用 —— 观察者模式(Observer Pattern)
观察者模式·unity·设计模式
Chan1615 天前
【 设计模式 | 行为型模式 观察者模式 】
java·spring boot·后端·spring·观察者模式·设计模式·idea
静心观复15 天前
观察者模式
观察者模式
宁静致远20211 个月前
【C++设计模式】第三篇:观察者模式(别名:发布-订阅模式、模型-视图模式、源-监听器模式)
c++·观察者模式·设计模式
xiaopengbc1 个月前
在 Python 中实现观察者模式的具体步骤是什么?
开发语言·python·观察者模式