Java8函数式编程入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

观察者模式

对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

query

例子,面向对象的观察者模式(完整代码见右边代码区):

public class Test {

    public static void main(String[] args) {
        Subject cs = new ConcreteSubject();
        //添加观察者
        cs.attach(new ConcreteObserver());
        //subject发生了某事,通知观察者
        cs.doSomeThings();
        Subject cs = new ConcreteSubject();
        cs.attach(() -> {
            System.out.println("我观察到subject发生了某事");
        });
        //subject发生了某事,通知观察者
        cs.doSomeThings();
    }
}

使用Lambda表达式改写:可以去掉具体的观察者。

public class Test {

    public static void main(String[] args) {
        Subject cs = new ConcreteSubject();
        cs.attach(() -> {
            System.out.println("我观察到subject发生了某事");
        });
        //subject发生了某事,通知观察者
        cs.doSomeThings();
    }
}

输出结果:

query