观察者模式

核心概念

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

观察者模式的优点

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

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

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

相关推荐
快乐江湖2 天前
「八卦传播者」—— 观察者模式
观察者模式
多加点辣也没关系2 天前
设计模式-观察者模式
观察者模式·设计模式
heimeiyingwang15 天前
【架构实战】状态机架构:订单/工单状态流转设计
观察者模式·架构·wpf
heimeiyingwang20 天前
【架构实战】观察者模式在分布式系统中的应用
观察者模式·架构·wpf
geovindu20 天前
go: Observer Pattern
开发语言·观察者模式·设计模式·golang
工业甲酰苯胺24 天前
Tomcat的事件监听机制:观察者模式
java·观察者模式·tomcat
ximu_polaris24 天前
设计模式(C++)-行为型模式-观察者模式
c++·观察者模式·设计模式
悟05151 个月前
观察者模式
观察者模式
一颗青果1 个月前
观察者模式讲解
观察者模式
yaaakaaang1 个月前
十九、观察者模式
java·观察者模式