1700469474
1700469475
}
1700469476
1700469477
//通知所有观察者
1700469478
1700469479
public void notifyObservers(){
1700469480
1700469481
for(Observer o:this.obsVector){
1700469482
1700469483
o.update();
1700469484
1700469485
}
1700469486
1700469487
}
1700469488
1700469489
}
1700469490
1700469491
被观察者的职责非常简单,就是定义谁能够观察,谁不能观察,程序中使用ArrayList和Vector没有太大的差别,ArrayList是线程异步,不安全;Vector是线程同步,安全——就这点区别。我们再来看具体的被观察者,如代码清单22-16所示。
1700469492
1700469493
代码清单22-16 具体被观察者
1700469494
1700469495
public class ConcreteSubject extends Subject{
1700469496
1700469497
//具体的业务
1700469498
1700469499
public void doSomething(){
1700469500
1700469501
/*
1700469502
1700469503
*do something
1700469504
1700469505
*/
1700469506
1700469507
super.notifyObservers();
1700469508
1700469509
}
1700469510
1700469511
}
1700469512
1700469513
我们现在看到的是一个纯净的观察者,在具体项目中该类有很多的变种,在22.4一节中介绍。
1700469514
1700469515
我们再来看观察者角色,如代码清单22-17所示。
1700469516
1700469517
代码清单22-17 观察者
1700469518
1700469519
public interface Observer{
1700469520
1700469521
//更新方法
1700469522
1700469523
public void update();
[
上一页 ]
[ :1.700469474e+09 ]
[
下一页 ]