1装饰模式
目的:向一个现有的对象添加新的功能,同时又不改变其结构。
主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。
何时使用:在不想增加很多子类的情况下扩展类。
实现方法:
装饰类和被装饰类实现同样的接口,持有被装饰类接口的引用。
应用:
2代理模式
意图:为其他对象提供一种代理以控制对这个对象的访问。
主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
3区别
1.功能区别:
装饰器模式为了增强功能(动态添加方法),而代理模式是为了加以控制(隐藏real class)。
2.代码区别
装饰器模式的被装饰类对象是通过参数传入的,代理模式的被代理类对象是自己new出来的()