观察者模式(Observer)

2018-08-05  本文已影响8人  森码
  1. 定义
    定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。

  2. 类图


    Obeserver
  3. 例子

interface Observer {
    public void update();
}
class ConcreteObserver1 implements Observer {
    public void update() {
        System.out.println("观察者1收到信息,并进行处理。");
    }
}
class ConcreteObserver2 implements Observer {
    public void update() {
        System.out.println("观察者2收到信息,并进行处理。");
    }
}
 
abstract class Subject {
    private List<Observer> obs = new ArrayList<Observer>();
    
    public void addObserver(Observer obs){
        this.obs.add(obs);
    }
    public void delObserver(Observer obs){
        this.obs.remove(obs);
    }
    protected void notifyObserver(){
        for(Observer o: obs){
            o.update();
        }
    }
    public abstract void notify();
}
 
class ConcreteSubject extends Subject {
    public void notify(){
        System.out.println("被观察者事件发生");
        this.notifyObserver();
    }
}

public class Client {
    public static void main(String[] args){
        Subject sub = new ConcreteSubject();
        sub.addObserver(new ConcreteObserver1()); //添加观察者1
        sub.addObserver(new ConcreteObserver2()); //添加观察者2
        sub.notify();
    }
}

补充

上一篇 下一篇

猜你喜欢

热点阅读