设计模式_观察者模式

模式:行为型模式
用处:假设我们有一对多依赖关系的对象链,当一个对象的状态发生改变时,所有依赖于它的对象得到了通知并自动更新。

需要我们去注意的是,这个观察者模式是具有“一对多”这种关系的设计模式。也就是说,凡是具有这种特征的架构,都可以考虑使用这个模式。

✨ 代码
主题类

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");
    }
}

原文地址:https://www.cnblogs.com/tjc1996/p/10674924.html