最近在研究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
}
}
当然以上也仅仅是一家之言,综合来讲两者区分并不是太明显,硬是将两者区分开并没有太多实际意义。。。
具体业务场景根据需求随意用~