装饰器通过包装一个装饰对象来扩展其功能,而又不改变其接口,这实际上是基于对象的适配器模式的一种变种。与对象的适配器模式异同:
- 相同点:都拥有一个目标对象,都是增加新功能。
2. 不同点:装饰器主要是要给对象加功能,主要体现在 new zhuangpei(new oldClass()) ,用新对象把旧对象包装起来,然后添加新功能 。
适配器,是要用的对象不能满足新功能,但是新功能又不需要去重写,通过使用已有的接口来实现功能(为什么用功能不直接去注入接口呢?跟电脑是一样的,usb接口已经规定好,不能去修改)
适配器类是需要注入需要使用的接口,但是适配器类是需要实现被适配类注入的接口,还是需要实现被适配类所实现的接口?
所以问题就来到了下面:
1)每一个对象要使用功能(也是方法),要么在对象所在的类里写这个功能,要么注入有所需要功能的接口。
2)每一个对象都是所在接口的子对象(向上转型)。
3)注入的接口对象有多种实例化的方式(只有实例过的对象才能在运行的时候真正的进行动作),new 对象,通过注解(这只是把实例对象的动作交给了框架),或者通过方法,从其他地方传入(构造方法里作为入参传入,只是为了在原对象实例的时候,注入的对象也已经实例,那么此对象可以执行相关操作)。