观察者模式

核心概念

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

观察者模式的优点

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

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

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

相关推荐
刘卜卜&嵌入式4 天前
C++_设计模式_观察者模式(Observer Pattern)
c++·观察者模式·设计模式
智想天开5 天前
8.观察者模式:思考与解读
观察者模式
匹马夕阳5 天前
Java中订阅消费模式(发布-订阅模式)和观察者模式的区别
java·开发语言·观察者模式
匹马夕阳5 天前
(二十六)Java观察者模式在Android开发中的应用详解
android·java·观察者模式
谢栋_5 天前
设计模式从入门到精通之(五)观察者模式
观察者模式·设计模式
Pasregret8 天前
观察者模式:从博客订阅到消息队列的解耦实践
后端·观察者模式
匹马夕阳9 天前
Java开发中的设计模式之观察者模式详细讲解
java·观察者模式·设计模式
听闻风很好吃10 天前
Java设计模式之观察者模式:从入门到架构级实践
java·观察者模式·设计模式
骊山道童11 天前
设计模式-观察者模式
观察者模式·设计模式
chushiyunen12 天前
设计模式-观察者模式和发布订阅模式区别
观察者模式·设计模式