每個模式的名稱就表明了該模式的作用,代理模式就是用代理類替代原對象進行一些操作。采用代理類調(diào)用原有的方法,可以對原對象產(chǎn)生的結果進行控制定欧。
舉個栗子:
定義一個接口
public interface Sourceable {
void function();
}
定義實現(xiàn)類
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");
}
}
詳細代碼在這里渔呵。
總結
- 代理類實現(xiàn)和目標類相同的接口
- 代理類的功能由調(diào)用目標類功能來實現(xiàn)
- 在調(diào)用功能前后等位置(前、后砍鸠、前后扩氢、catch塊)可以添加擴展功能