定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当注意对象发生变化时,它的所有依赖者都会收到通知并更新
当更改一个对象的状态可能需要更改其他对象,并且实际的对象集事先未知或动态更改时,请使用观察者模式
1.符合开闭原则
2.可以在运行时建立对象之间的关系
//主题对象
class Subject{
//容器
List<ObServer> container = new ArrayList<>();
//add
public void addObserver(ObServer obServer){
container.add(obServer);
}
//remove
public void removeObserver(ObServer obServer){
container.remove(obServer);
}
public void notifyObserver(Object object){
for (ObServer obServer : container) {
obServer.update(object);
}
}
}
//观察者
interface ObServer{
void update(Object object);
}
//任务1
class Task1 implements ObServer{
@Override
public void update(Object object) {
System.out.println("task1"+object);
}
}
//任务2
class Task2 implements ObServer{
@Override
public void update(Object object) {
System.out.println("task2"+object);
}
}