1700469420
设计模式之禅 22.2 观察者模式的定义
1700469421
1700469422
观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/subscribe),它是一个在项目中经常使用的模式,其定义如下:
1700469423
1700469424
Define a one-to-many dependency between objects so that when one object changes state,all its dependents are notified and updated automatically.(定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。)
1700469425
1700469426
观察者模式的通用类图,如图22-5所示。
1700469427
1700469428
1700469429
1700469430
1700469431
图22-5 观察者模式通用类图
1700469432
1700469433
我们先来解释一下观察者模式的几个角色名称:
1700469434
1700469435
❑Subject被观察者
1700469436
1700469437
定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类,仅仅完成作为被观察者必须实现的职责:管理观察者并通知观察者。
1700469438
1700469439
❑Observer观察者
1700469440
1700469441
观察者接收到消息后,即进行update(更新方法)操作,对接收到的信息进行处理。
1700469442
1700469443
❑ConcreteSubject具体的被观察者
1700469444
1700469445
定义被观察者自己的业务逻辑,同时定义对哪些事件进行通知。
1700469446
1700469447
❑ConcreteObserver具体的观察者
1700469448
1700469449
每个观察在接收到消息后的处理反应是不同,各个观察者有自己的处理逻辑。
1700469450
1700469451
各个名词介绍完毕,我们来看看各自的通用代码,先看被观察者角色,如代码清单22-15所示。
1700469452
1700469453
代码清单22-15 被观察者
1700469454
1700469455
public abstract class Subject{
1700469456
1700469457
//定义一个观察者数组
1700469458
1700469459
private Vector<Observer>obsVector=new Vector<Observer>();
1700469460
1700469461
//增加一个观察者
1700469462
1700469463
public void addObserver(Observer o){
1700469464
1700469465
this.obsVector.add(o);
1700469466
1700469467
}
1700469468
[
上一页 ]
[ :1.700469419e+09 ]
[
下一页 ]