模式:行为型模式
用处:假设我们有一对多依赖关系的对象链,当一个对象的状态发生改变时,所有依赖于它的对象得到了通知并自动更新。
需要我们去注意的是,这个观察者模式是具有“一对多”这种关系的设计模式。也就是说,凡是具有这种特征的架构,都可以考虑使用这个模式。
✨ 代码
主题类
public class Subject {
private String state;
private List<ObjectModel> objs = new ArrayList<>();
public void setState(String state) {
this.state = state;
this.notifyAllObject(state);
}
private void notifyAllObject(String state) {
for (ObjectModel obj : objs) {
obj.update(state);
}
}
public void attach(ObjectModel objectModel) {
objs.add(objectModel);
}
}
订阅了某主题的对象类
public class ObjectModel {
private Subject subject;
public ObjectModel(Subject subject) {
this.subject = subject;
this.subject.attach(this);
}
public void update(String state) {
System.out.println(state);
}
}
public class Test {
public static void main(String[] args) {
Subject subject = new Subject();
ObjectModel model1 = new ObjectModel(subject);
ObjectModel model2 = new ObjectModel(subject);
ObjectModel model3 = new ObjectModel(subject);
ObjectModel model4 = new ObjectModel(subject);
subject.setState("123");
}
}