观察者模式

    观察者模式 (Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布 -订阅( Publish/Subscribe)模式、模型 -视图( Model/View)模式、源 -监听器( Source/Listener)模式或从属者( Dependents)模式。观察者模式是一种对象行为型模式。
     观察者模式结构中通常包括观察目标和观察者两个继承层次结构:

      观察者模式描述了如何建立对象与对象之间的依赖关系,以及如何构造满足这种需求的系统。
     目标持有一个观察者集合,当产生某些行为时,通知所有的观察者。观察者收到通知做出相应的响应。这种模式成为:订阅-发布模式。为了降低目标和具体观察者间的耦合,可以在中间加入一个“平台”,目标通知平台,平台再分发消息。
    观察者模式很常用、也很重要,JDK提供了对它的原生支持:
  • Observable类:定义了一个Vector存储观察者。
  • Observer接口:只声明一个方法void update(Observable o, Object args)
    流行的MVC中也用到了观察者设计模式。Model是目标,View是观察者,Controler作为中介,Model发生变化时,所有相关的View也随之响应。

    总结:
        优点:
  • 将行为的产生于响应隔离,降低耦合,同时可以实现灵活的一对多关系。
  • 符合开闭原则,增加新的观察者无需修改原有代码;增加观察目标时,视情况而定。
        缺点:
  • 观察目标很多的话,消耗时间
  • 存在循环观察的可能
        适用:
    • 一个抽象模型有两个方面,一个方面依赖另一个方面,将他们分别独立开来
    • 一个对象的改变会引发其他对象的改变,但并不知道都有谁、有多少
    • 需要在系统建立一条触发链的时候
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值