java设计模式之观察者模式

it2025-12-10  1

定义

定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象, 当主题对象发生变化时,它的所有依赖者收到通知并更新

package com.cbx.Observer; import java.util.ArrayList; import java.util.List; /** * @Author:cbx * @Date:2020/10/22/14:02 */ public class ObserverTest { public static void main(String[] args) { Subject subject=new Subject(); Task1 task1=new Task1(); Task2 task2=new Task2(); subject.addObserver(task1); subject.addObserver(task2); subject.notifyObserver("message"); } } class Subject{ //容器 private List<Observer> container=new ArrayList<>(); //add public void addObserver(Observer observer){ container.add(observer); } //remove public void removeOberver(Observer observer){ container.remove(observer); } public void notifyObserver(Object object){ for (Observer item : container) { item.update(object); } } } interface Observer{ //观察者的更新 void update(Object obj); } class Task1 implements Observer{ @Override public void update(Object obj) { System.out.println("task1 receive "+obj); } } class Task2 implements Observer{ @Override public void update(Object obj) { System.out.println("task2 receive "+obj); } }

应用场景

当更改一个对象的状态可能需要更改其他对象,并且实际的的对象集事先未知或动态更改时,使用观察者模式

JDK&Spring场景应用

jdk 中 :java.uitl.Observable spring中: ApplicationListener
最新回复(0)