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 代理的构造函数
1700460186
1700460187
public Proxy(Subject_subject){
1700460188
1700460189
this.subject=_subject;
1700460190
1700460191
}
1700460192
1700460193
你要代理谁就产生该代理的实例,然后把被代理者传递进来,该模式在实际的项目应用中比较广泛。
1700460194
1700460195
1700460196
1700460197
1700460199
设计模式之禅 12.3 代理模式的应用
[
上一页 ]
[ :1.70046015e+09 ]
[
下一页 ]