什么是观察者模式?
在多个对象之间存在一对多的关系时,被依赖的对象发生改变时,其他依赖的对象就会接收到通知发生变化。(观察者依赖主题,主题信息发生改变就会通知观察者)
场景描述
多个观察者订阅主题信息,主题信息发生改变时通知订阅的观察者
示例图
图片.png示例代码
1.创建抽象的观察者
public interface ObServer {
void updateMsg(String msg);
}
2.创建抽象的主题
public abstract class Subject {
protected List<ObServer> listObServer = new ArrayList<>();
public void addObServer(ObServer obServer) {
listObServer.add(obServer);
}
public abstract void notifyObServer(String name);
}
3.创建具体的主题
public class ConcreteSubject extends Subject {
@Override
public void notifyObServer(String msg) {
for (int i = 0; i < listObServer.size() ; i++) {
listObServer.get(i).updateMsg(msg);
}
}
}
4.创建具体的观察者
public class ConcreteObServer implements ObServer {
private String name;
public ConcreteObServer(String name) {
this.name = name;
}
@Override
public void updateMsg(String msg) {
System.out.println(name+"接收到"+msg);
}
}
5.启动类
public class Test {
public static void main(String[] args) {
ConcreteSubject concreteSubject = new ConcreteSubject();
ConcreteObServer concreteObServerOne = new ConcreteObServer("观察者1");
ConcreteObServer concreteObServerTwo = new ConcreteObServer("观察者2");
concreteSubject.addObServer(concreteObServerOne);
concreteSubject.addObServer(concreteObServerTwo);
concreteSubject.notifyObServer("主题开始发送信息了。。。。。。。");
}
}
6.运行结果
图片.png
网友评论