1700465147
super(_component);
1700465148
1700465149
}
1700465150
1700465151
//定义自己的修饰方法
1700465152
1700465153
private void method2(){
1700465154
1700465155
System.out.println(“method2修饰”);
1700465156
1700465157
}
1700465158
1700465159
//重写父类的Operation方法
1700465160
1700465161
public void operate(){
1700465162
1700465163
super.operate();
1700465164
1700465165
this.method2();
1700465166
1700465167
}
1700465168
1700465169
}
1700465170
1700465171
注意 原始方法和装饰方法的执行顺序在具体的装饰类是固定的,可以通过方法重载实现多种执行顺序。
1700465172
1700465173
我们通过Client类来模拟高层模块的耦合关系,看看装饰模式是如何运行的,如代码清单17-14所示。
1700465174
1700465175
代码清单17-14 场景类
1700465176
1700465177
public class Client{
1700465178
1700465179
public static void main(String[]args){
1700465180
1700465181
Component component=new ConcreteComponent();
1700465182
1700465183
//第一次修饰
1700465184
1700465185
component=new ConcreteDecorator1(component);
1700465186
1700465187
//第二次修饰
1700465188
1700465189
component=new ConcreteDecorator2(component);
1700465190
1700465191
//修饰后运行
1700465192
1700465193
component.operate();
1700465194
1700465195
}
1700465196
[
上一页 ]
[ :1.700465147e+09 ]
[
下一页 ]