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