代理模式和装饰器模式的区别

代理模式和装饰器模式, 包装和实现都继承自同一接口,形式比较像,但是其实它们的用途是各不相同的。

代理模式,隐藏了真实的处理者,装饰模式需要客户制定具体的处理者。

使用代理模式,代理和真实对象之间的的关系通常在编译时就已经确定了,而装饰者能够在运行时递归地被构造。

//代理的客户
public class Client{
        public static void main(String[] args){
             //客户不知道代理委托了另一个对象
             Subject subject = new Proxy();
             …
        }
}

//装饰器的客户
public class Client{
        public static void main(String[] args){
            //客户指定了装饰者需要装饰的是哪一个类
            Component component = new Decorator(new ConcreteComponent());
            …
        }
}




你可能感兴趣的:(c++,代理模式,装饰器模式)