打字猴:1.700469169e+09
1700469169
1700469170 图22-4 改进后的观察者和被观察者
1700469171
1700469172 我们把原有类图做了两个修改:
1700469173
1700469174 ❑增加Observable
1700469175
1700469176 实现该接口的都是被观察者,那韩非子是被观察者,他当然也要实现该接口了,同时他还有与其他庸人相异的事要做,因此他还是要实现IHanFeizi接口。
1700469177
1700469178 ❑修改ILiSI接口名称为Observer
1700469179
1700469180 接口名称修改了一下,这样显得更抽象化,所有实现该接口的都是观察者(类似李斯这样的)。
1700469181
1700469182 Observable是被观察者,就是类似韩非子这样的人,在Observable接口中有三个比较重要的方法,分别是addObserver增加观察者,deleteObserver删除观察者,notifyObservers通知所有的观察者,这是什么意思呢?我这里有一个信息,一个对象,我可以允许有多个对象来察看,你观察也成,我观察也成,只要是观察者就成,也就是说我的改变或动作执行,会通知其他的对象,看程序会更明白一点,先看Observable接口,如代码清单22-9所示。
1700469183
1700469184 代码清单22-9 被观察者接口
1700469185
1700469186 public interface Observable{
1700469187
1700469188 //增加一个观察者
1700469189
1700469190 public void addObserver(Observer observer);
1700469191
1700469192 //删除一个观察者
1700469193
1700469194 public void deleteObserver(Observer observer);
1700469195
1700469196 //既然要观察,我发生改变了他也应该有所动作,通知观察者
1700469197
1700469198 public void notifyObservers(String context);
1700469199
1700469200 }
1700469201
1700469202 这是一个通用的被观察者接口,所有的被观察者都可以实现这个接口。再来看韩非子的实现类,如代码清单22-10所示。
1700469203
1700469204 代码清单22-10 被观察者实现类
1700469205
1700469206 public class HanFeiZi implements Observable,IHanFeiZi{
1700469207
1700469208 //定义个变长数组,存放所有的观察者
1700469209
1700469210 private ArrayList<Observer>observerList=new ArrayList<Observer>();
1700469211
1700469212 //增加观察者
1700469213
1700469214 public void addObserver(Observer observer){
1700469215
1700469216 this.observerList.add(observer);
1700469217
1700469218 }
[ 上一页 ]  [ :1.700469169e+09 ]  [ 下一页 ]