打字猴:1.700460136e+09
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 ]  [ 下一页 ]