Java基础

设计模式4.4 观察者模式

2019-01-11  本文已影响1人  卢卡斯哔哔哔

点击进入我的博客

1 简介

观察者模式是对象的行为模式,又叫做发布-订阅( Publish/ Subscribe)模式、模型-视图( Model/View)模式、源-监听器( Source/Listener)模式或从属者( Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自

2 结构

观察者模式结构

3 代码

在Java语言的java.util库里面,提供了一个Observable类以及一个Observer接口,构成Java语言对观察者模式的支持。

观察者:Observer接口

这个接口只定义了一个方法,即update()方法。当被观察者对象的状态发生变化时,被观察者对象的notifyObservers()方法就会调用这一方法。

被观察者:Observable类

被观察者类都是java.util.Observable类的子类。 java.util.Observable提供公开的方法支
持观察者对象:

4 例子

public class Main {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        Student student = new Student(teacher);
        teacher.writingOnBlackboard();
    }
}

// 老师(被观察者)在黑板上写东西
class Teacher extends Observable {
    public void writingOnBlackboard() {
        System.out.println("1 + 1 = 2");
        setChanged();
        notifyObservers();
    }
}

// 学生(观察者)观察老师写的东西并作出相应
class Student implements Observer {
    public Student(Observable o) {
        o.addObserver(this);
    }

    @Override
    public void update(Observable o, Object arg) {
        System.out.println("I know!");
    }
}
上一篇下一篇

猜你喜欢

热点阅读