最近在研究Rxjava和retrofit源碼,于是才有了這個小疑惑。
查了資料發現兩種有一點點區別,在于代理類的 構造方法:比如
接口
public interface Subject {
void doAction();
}
裝飾器模式
public class Decorator implements Subject{
private Subject subject;
public Proxy(Subject subject){
//具體被裝飾類由調用者傳入,所以動態
this.subject = subject;
}
public void doAction(){
….//do sth
subject.doAction();
….//do sth
}
}
靜態代理
public class Proxy implements Subject{
private Subject subject;
public Proxy(){
//很明確具體代理哪個實現類,所以寫死
subject = new RealSubject();
}
public void doAction(){
….//do sth
subject.doAction();
….//do sth
}
}
當然以上也僅僅是一家之言,綜合來講兩者區分并不是太明顯,硬是將兩者區分開并沒有太多實際意義。。。
具體業務場景根據需求隨意用~