观察者模式(Observer)

  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 obs = new ArrayList();
    
    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();
    }
}

补充

  • 观察者以其响应式编程的特点受到了越来越多的青睐,特别是前端,各种变体层出不穷MVVM,EventBus等等,这样的代码不仅降低了各个部分之间的耦合,而且也让开发变得更加舒适,但是要有一个良好的架构和设计,否则可读性会变的比较差。

你可能感兴趣的:(观察者模式(Observer))