设计模式——观察者模式

观察者模式的定义:

在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。

大白话:

其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。
例如,一个妈妈有两个小孩,小孩在外面玩,妈妈做饭,饭做好了要通知孩子们吃饭。

上代码,先建立被观察者
//被观察者,创建两个小孩实例
public interface ToBeWatcher {
    void remind();
}

public class Child1 implements ToBeWatcher {
    @Override
    public void remind() {
        System.out.println("我是小王,我妈叫我吃饭了");
    }
}

public class Child2 implements ToBeWatcher {
    @Override
    public void remind() {
        System.out.println("我是小李,我妈叫我吃饭了");
    }
}
观察者(妈妈)
public class Watcher {
    private ArrayList children=new ArrayList<>();
    void cook(){
        System.out.println("我是妈妈,正在做饭-----------");
        System.out.println("饭做好了,要叫孩子们吃饭------");
    }
//将订阅者(小孩)注册进来
    void addChild(ToBeWatcher child){
        children.add(child);
    }
//发布消息
    void remindChild(){
        for (ToBeWatcher child : children) {
            child.remind();
        }
    }
}
测试运行结果
public class test {
    public static void main(String[] args) {
        Child1 child1 = new Child1();
        Child2 child2 = new Child2();
        Watcher watcher = new Watcher();
        watcher.addChild(child1);
        watcher.addChild(child2);
        watcher.cook();
        watcher.remindChild();
    }
}

我是妈妈,正在做饭-----------
饭做好了,要叫孩子们吃饭------
我是小王,我妈叫我吃饭了
我是小李,我妈叫我吃饭了

你可能感兴趣的:(设计模式——观察者模式)