1700460136
1700460137
//默认被代理者
1700460138
1700460139
public Proxy(){
1700460140
1700460141
this.subject=new Proxy();
1700460142
1700460143
}
1700460144
1700460145
//通过构造函数传递代理者
1700460146
1700460147
public Proxy(Object……objects){
1700460148
1700460149
}
1700460150
1700460151
//实现接口中定义的方法
1700460152
1700460153
public void request(){
1700460154
1700460155
this.before();
1700460156
1700460157
this.subject.request();
1700460158
1700460159
this.after();
1700460160
1700460161
}
1700460162
1700460163
//预处理
1700460164
1700460165
private void before(){
1700460166
1700460167
//do something
1700460168
1700460169
}
1700460170
1700460171
//善后处理
1700460172
1700460173
private void after(){
1700460174
1700460175
//do something
1700460176
1700460177
}
1700460178
1700460179
}
1700460180
1700460181
看到这里,大家别惊讶,为什么会出现before和after方法,继续看下去,这是一个“引子”,能够引出一个崭新的编程模式。
1700460182
1700460183
一个代理类可以代理多个被委托者或被代理者,因此一个代理类具体代理哪个真实主题角色,是由场景类决定的。当然,最简单的情况就是一个主题类和一个代理类,这是最简洁的代理模式。在通常情况下,一个接口只需要一个代理类就可以了,具体代理哪个实现类由高层模块来决定,也就是在代理类的构造函数中传递被代理者,例如我们可以在代理类Proxy中增加如代码清单12-9所示的构造函数。
1700460184
1700460185
代码清单12-9 代理的构造函数
[
上一页 ]
[ :1.700460136e+09 ]
[
下一页 ]