每个模式的名称就表明了该模式的作用,代理模式就是用代理类替代原对象进行一些操作。采用代理类调用原有的方法,可以对原对象产生的结果进行控制。
举个栗子:
定义一个接口
public interface Sourceable {
void function();
}
定义实现类
public class Source implements Sourceable {
@Override
public void function() {
System.out.println("function");
}
}
定义代理
public class Proxy implements Sourceable {
private Sourceable source;
public Proxy(){
this.source = new Source();
}
public Proxy(Sourceable source){
this.source = source;
}
@Override
public void function() {
before();
source.function();
atfer();
}
private void atfer() {
System.out.println("after");
}
private void before() {
System.out.println("before");
}
}
详细代码在这里。
总结
- 代理类实现和目标类相同的接口
- 代理类的功能由调用目标类功能来实现
- 在调用功能前后等位置(前、后、前后、catch块)可以添加扩展功能
网友评论