设计模式笔记-观察者(Observer)

观察者设计模式应该是比较简单的一个设计模式。

定义

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

简单理解就是: 当1个对象状态有所改变的时候,依赖于它的其他对象将会有所行为。

举例:时钟12点响起的时候,公司里的员工都出去吃饭了,老板准备开会了,学生下课了。 

类图

 

测试

public class Test {

    public static void main(String[] args) {
        Clock clock = new Clock();
        Employee employee = new Employee();
        Student student = new Student();
        Boss boss = new Boss();
        clock.registerObserver(employee);
        clock.registerObserver(student);
        clock.registerObserver(boss);
        clock.clock12();
    }

}

output:

可以看出,只要时钟到了12点。各个观察者就会触发各自对应的行为。

总结

其实jdk中已经为我们定义了一套观察者设计模式的api。

是Observable和Observer。

需要注意的几点是

Observable是一个类,而并非接口;

Observer接口大致一致,不过jdk提供的Observer带有参数;

Observable类调用notifyObservers的时候需要调用一下setChanged方法,它里面维护一个实例变量changed。

有兴趣的同学可以自行查看jdk源码。

原文地址:https://www.cnblogs.com/fangjian0423/p/3561325.html