1700477244
1700477245
System.out.println(“加快运动员的速度:为运动员增加喷气装置”);
1700477246
1700477247
runner.run();
1700477248
1700477249
}
1700477250
1700477251
}
1700477252
1700477253
这和代理模式中的代理类也是非常相似的,只是装饰类对类的行为没有决定权,只有增强作用,也就是说它不决定被代理的方法是否执行,它只是再次增加被代理的功能。我们来看场景类,如代码清单31-6所示。
1700477254
1700477255
代码清单31-6 场景类
1700477256
1700477257
public class Client{
1700477258
1700477259
public static void main(String[]args){
1700477260
1700477261
//定义运动员
1700477262
1700477263
IRunner liu=new Runner();
1700477264
1700477265
//对其功能加强
1700477266
1700477267
liu=new RunnerWithJet(liu);
1700477268
1700477269
//看看它的跑步情况如何
1700477270
1700477271
System.out.println(”===增强后的运动员的功能===”);
1700477272
1700477273
liu.run();
1700477274
1700477275
}
1700477276
1700477277
}
1700477278
1700477279
运行结果如下所示:
1700477280
1700477281
===增强后的运动员的功能===
1700477282
1700477283
加快运动员的速度:为运动员增加喷气装置
1700477284
1700477285
运动员跑步:动作很潇洒
1700477286
1700477287
注意 思考一下我们的程序,我们通过增加了一个装饰类,就完成了对原有类的功能增加,由一个普通的短跑运动员变成了带有喷气装置的超人运动员,其速度岂是普通人能相比的?!
1700477288
1700477289
1700477290
1700477291
1700477292
设计模式之禅 31.1.3 最佳实践
1700477293
[
上一页 ]
[ :1.700477244e+09 ]
[
下一页 ]