设计模式 —— 观察者模式

1.定义

  • 定义: 观察者模式 定义了对象之间的一对多依赖,这样以来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
  • 可以利用报纸订阅服务,以及出版者和订阅者比拟观察者模式。出版者改成为主题(Subject),订阅者改称为观察者(Observer)
  • 主题和观察者定义了一对多的关系,观察者依赖于此主题,只要主题状态一有变化,观察者就会被通知。根据通知的风格,观察者可能因此新值而更新
  • 实现观察者模式的方法不止一种,但是以包含 Subject 于 Object 接口的类设计的做法最常见。
  • 主题是真正拥有数据的人,观察者是主题的依赖者,在数据变化时更新。这样比起来让许多对象控制同一份数据,可以得到更干净的OO设计

2.类图

在这里插入图片描述

  • 左上:主题接口,对象使用此接口注册为观察者,或者把自己从观察者中删除。
  • 右上:所有潜在的观察者必须实现观察者接口,这个接口只有 update()方法,当主题状态改变时被调用
  • 左下:一个具体主题总是实现主题接口,除了注册和撤销方法之外,具体主题还实现了notifyObserver() 方法,此方法用于在状态改变时更新所有当前观察者
  • 右下:具体观察者可以是实现接口的任意类,观察者必须注册具体主题,以便接收更新

3.松耦合

  • 观察者模式提供了一种对象设计,让主题和观察者之间松耦合
    • 互相不知道具体实现和细节
    • 任何时候可以增加新的观察者
    • 改变任一方不会影响另一方,只要他们之间的接口仍被遵守
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值