观察者模式又称监听者模式,它广泛应用在图形化编程中。
实现观察者模式比较直观的一种是使用“注册、通知、撤销注册”的形式:
(1)注册
观察者将自己注册到目标对象中,目标对象将观察者放在一个容器里。为防止观察者重复,一般用HashSet来保存观察者的引用(Set集合无序、不重复)。
(2)通知
目标对象发生了某种变化(如按钮被单击),从容器中得到所有注册过的观察者,将变化通知给观察者。
(3)撤销注册
观察者告诉目标要撤销观察,目标间观察者从容器中移除。所以观察者接口中需要有cancelObserve()方法,方法体中得到目标的容器,并去掉当前观察者。
1 | //观察者(抽象类) |
1 | //具体观察者 |
1 | //商品类(具体类) |
1 | //主类 |