1700464082
1700464083
图16-3 顺序处理的类图
1700464084
1700464085
从类图上看,三个实现类Father、Husband、Son只要实现构造函数和父类中的抽象方法response就可以了,具体由谁处理女性提出的请求,都已经转移到了Handler抽象类中,我们来看Handler怎么实现,如代码清单16-8所示。
1700464086
1700464087
代码清单16-8 修改后的Handler类
1700464088
1700464089
public abstract class Handler{
1700464090
1700464091
public final static int FATHER_LEVEL_REQUEST=1;
1700464092
1700464093
public final static int HUSBAND_LEVEL_REQUEST=2;
1700464094
1700464095
public final static int SON_LEVEL_REQUEST=3;
1700464096
1700464097
//能处理的级别
1700464098
1700464099
private int level=0;
1700464100
1700464101
//责任传递,下一个人责任人是谁
1700464102
1700464103
private Handler nextHandler;
1700464104
1700464105
//每个类都要说明一下自己能处理哪些请求
1700464106
1700464107
public Handler(int_level){
1700464108
1700464109
this.level=_level;
1700464110
1700464111
}
1700464112
1700464113
//一个女性(女儿、妻子或者是母亲)要求逛街,你要处理这个请求
1700464114
1700464115
public final void HandleMessage(IWomen women){
1700464116
1700464117
if(women.getType()==this.level){
1700464118
1700464119
this.response(women);
1700464120
1700464121
}else{
1700464122
1700464123
if(this.nextHandler!=null){//有后续环节,才把请求往后递送
1700464124
1700464125
this.nextHandler.HandleMessage(women);
1700464126
1700464127
}else{//已经没有后续处理人了,不用处理了
1700464128
1700464129
System.out.println(”–没地方请示了,按不同意处理–\n”);
1700464130
1700464131
}
[
上一页 ]
[ :1.700464082e+09 ]
[
下一页 ]