每個模式的名稱就表明了該模式的作用,代理模式就是用代理類替代原對象進行一些操作。采用代理類調用原有的方法,可以對原對象產生的結果進行控制。
舉個栗子:
定義一個接口
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塊)可以添加擴展功能