代理模式和装饰器模式功能很相似;
装饰器模式:装饰着和被装饰者搜实现同一个接口;
代理模式:代理类和真实类都实现同一个接口;
区别是:装饰器模式主要是强调对类中代码的扩展,而代理模式则更偏向于委托类的访问限制(可以隐藏客户对象的具体信息);
也就是说采用代理模式,一般会在代理类中创建一个对象的实例(这样可以隐藏客户的信息,但不具有扩展性,也就是说客户的类型会在代理类中写死,这样导致每个客户都要一个单独的代理类);而装饰器模式,通常是将原客户对象作为参数传递给装饰器的构造函数(这样扩展性强,但是暴露了客户的信息);