观察者模式

1 定义

    观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够采取相应的行为。

   观察者模式被称为是模式中的皇后,是一种常用的触发机制,而且JDK也对它做了实现,可见该设计模式的重 要位置。在图形化设计的软件中,为了实现视图和事件处理的分离,大多都采用了 Observer模式,比如java的Swing框架。在现实的应用系统中也有好多 应用,比如像当当网、京东商城一类的电子商务网站,如果你对某件商品比较关注,可以 放到收藏架,那么当该商品降价时,系统给您发送手机短信或邮件。这就是观察者模式的 一个典型应用,商品是被观察者;关注该商品的客户就是观察者。

2 为什么使用观察者模式

    在软件系统中,当一个或者多个对象的行为依赖于另一个对象的状态时,观察者模式就非常有用。如果不使用观察者模式提供的通用结构,而需要实现类似的功能时,则只能在另一个线程中不停地监听对象所依赖的状态,即安排一个轮询。在一个复杂的系统中,可能会因此开启很多线程来实现这一功能,这将使系统的性能产生额外的负担。观察者模式的意义也就在此,它可以在单线程中,使某一对象及时得知自身所依赖对象的状态的变化。
    观察者模式可用于时间监听、通知发布等场合。可以确保观察者在不使用轮询监控的情况下,及时收到相关消息和事件。

3 观察者模式的类图和四个角色


3.1 主题接口

    指被观察的对象。当其状态发生改变或者某一事件发生时,它会将这个变化通知观察者。它维护了观察者所需要依赖的状态。

3.2 具体主题

    具体主题实现了主题接口中的方法。比如,新增观察者,删除观察者,通知观察者,更改主题状态等。其内部维护一个观察者列表,每个主题都可以有任何数量的观察者。在具体主题内部状态改变时,给所有登记过的观察者发出通知。

3.3 观察者接口

    观察者接口定义了观察者的基本方法。当依赖状态发生改变时,主题接口就会调用观察者的update()方法。

3.4 具体观察者

   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值