1、简介
在观察者模式中,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
2、实现
观察者模式包含一个观察关系管理类Subject类、观察者Observer抽象类、和Observer的扩展实体类。
public class Subject {
private List<Observer> observers = new ArrayList<>();
private int state;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
notifyAllObservers();
}
public void attach(Observer observer) {
observers.add(observer);
}
public void notifyAllObservers() {
for(Observer observer: observers) {
observer.update();
}
}
}
// 观察者抽象类
public abstract class Observer {
public Subject subject;
public abstract void update();
}
// 一名观察者
public class ObserverLiLy extends Observer {
public ObserverLiLy(Subject subject) {
this.subject = subject;
this.subject.attach(this);
}
@Override
public void update() {
System.out.println(\"ObserverLiLy update state to : \" + subject.getState());
}
}
// 一名观察者
public class ObserverLucy extends Observer {
public ObserverLucy(Subject subject) {
this.subject = subject;
this.subject.attach(this);
}
@Override
public void update() {
System.out.println(\"ObserverLucy update state to : \" + subject.getState());
}
}
// 例子
public class LetsDoIt {
public static void main(String[] args) {
Subject subject = new Subject();
new ObserverLiLy(subject);
new ObserverLucy(subject);
subject.setState(10);
subject.setState(20);
}
}
继续阅读与本文标签相同的文章
上一篇 :
全球互联网发展进入“拐点”——展望下一代互联网
下一篇 :
AlexNet(Pytorch实现)
-
9月书讯:别抱怨读书苦,那是你看世界的路
2026-05-19栏目: 教程
-
首页流量波动大?如何避开猜你喜欢的n个雷区
2026-05-19栏目: 教程
-
Linux基础技术实践#网络安全基础技术实践课程
2026-05-19栏目: 教程
-
AI时代,你的职业会是?99%的人都无法直面!
2026-05-19栏目: 教程
-
centos7 编译安装 openresty
2026-05-19栏目: 教程
