代理模式和装饰模式的区别
共同点
对装饰器模式来说,装饰者(decorator)和被装饰者(decoratee)都实现同一个接口;对代理模式来说,代理类(proxy class)和真实处理类(real class)都实现同一个接口。此外,不论我们使用哪一个模式,都可以很容易地在真实对象的方法执行前后加上自定义的方法
不同点
装饰器模式关注于在一个对象上动态地添加新功能。比如我想要实现什么样的新功能,那就调用具体的装饰类,且可以先后调用不同的装饰类。客户端同时和装饰类、被装饰类产生直接联系,即不存在隐藏
而代理模式关注于控制对对象的访问。客户端直接与代理类进行联系,并不与真实处理类有直接的关联,这样就通过代理类对客户端隐藏了真实处理类
在实现上,代理模式一般是直接在代理类中创建真实处理类的实例,而装饰器模式通常将被装饰对象作为参数传递给装饰者的构造器
浙公网安备 33010602011771号