行为型模式之观察者模式

观察者模式
  • 用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。发生改变的对象称为观察目标,而被通知的对象称为观察者。
  • 定义:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式别名包括“发布-订阅”模式,“模型-视图”模式,“源-监听器”模式或从属者模式。
观察者模式结构

观察者模式结构

  • Subject(目标):定义了一个观察者集合,提供一系列方法来增加和删除观察者对象,同时定义通知方法。目标类可以是接口也可以是抽象类或具体类。
  • ConcreteSubject(具体目标):当它的状态发生改变时,向它的所有订阅者发出通知。
  • Observer(观察者):一般定义为接口,该接口声明了更新数据的方法,又称抽象观察者。
  • ConcreteObserver(具体观察者):维护一个具体目标的引用,保持和具体目标的状态一致。
abstract class Subject {
  protected ArrayList observers<Observer> = new ArrayList<>();

  //注册方法
  public void attach(Observer obs) {
    observers.add(obs);
  }
  //注销方法
  public void detach(Observer obs) {
    observers.remove(obs);
  }

  //声明抽象通知方法
  public abstract void notify();
}

class ConcreteSubject extends Subject {
  public void notify() {
    for (Object obj : observers) {
      ((Observer)obj).update();
    }
  }
}

interface Observer {
  public void update();
}

class ConcreteObserver implements Observer {
  public void update() {
    //具体响应逻辑
  }
}
Java中的观察者模式
  • Observer接口
  • Observable类
观察者模式与MVC
  • 模型(Model)
  • 视图(View)
  • 控制器(Controller)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值