打字猴:1.700469419e+09
1700469419 设计模式之禅 [:1700454020]
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 ]  [ 下一页 ]