装饰器模式和静态代理

2017-08-13  本文已影响42人  Jessewo

最近在研究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
       }
}

当然以上也仅仅是一家之言,综合来讲两者区分并不是太明显,硬是将两者区分开并没有太多实际意义。。。
具体业务场景根据需求随意用~

上一篇 下一篇

猜你喜欢

热点阅读