打字猴:1.700448235e+09
1700448235
1700448236 class DigFeature implements Feature{
1700448237
1700448238 public void load(){
1700448239
1700448240 System.out.println(“增加钻地能力……”);
1700448241
1700448242 }
1700448243
1700448244 }
1700448245
1700448246 此处定义了两种能力:一种是飞行,另一种是钻地,我们如果把这两种属性赋予到Jerry身上,那就需要一个包装动作类了,代码如下:
1700448247
1700448248 class DecorateAnimal implements Animal{
1700448249
1700448250 //被包装的动物
1700448251
1700448252 private Animal animal;
1700448253
1700448254 //使用哪一个包装器
1700448255
1700448256 private Class<?extends Feature>clz;
1700448257
1700448258 public DecorateAnimal(Animal_animal, Class<?extends Feature>_clz){
1700448259
1700448260 animal=_animal;
1700448261
1700448262 clz=_clz;
1700448263
1700448264 }
1700448265
1700448266 @Override
1700448267
1700448268 public void doStuff(){
1700448269
1700448270 InvocationHandler handler=new InvocationHandler(){
1700448271
1700448272 //具体包装行为
1700448273
1700448274 public Object invoke(Object p, Method m, Object[]args)throws
1700448275
1700448276 Throwable{
1700448277
1700448278 Object obj=null;
1700448279
1700448280 //设置包装条件
1700448281
1700448282 if(Modifier.isPublic(m.getModifiers())){
1700448283
1700448284 obj=m.invoke(clz.newInstance(),args);
[ 上一页 ]  [ :1.700448235e+09 ]  [ 下一页 ]