设计形式学习笔记-装饰者

设计模式学习笔记----装饰者
一、 对象组合
1. 是什么,有什么:现在在面向对象设计中,有一条很基本的规则就是“尽量使用对象组合,而不是对象继承”来扩展和复用功能。就是在C1对象里面不再继承A对象了,而是去组合使用A对象的实例,通过转调A对象的功能来实现A对象已有的功能
2. 干什么(优点):
(1)首先可以有选择的复用功能,不是所有A的功能都会被复用,在C2中少调用几个A定义的功能就可以了;
(2)其次在转调前后,可以实现一些功能处理,而且对于A对象是透明的,也就是A对象并不知道在a1方法处理的时候被追加了功能;
(4) 还有一个额外的好处,就是可以组合拥有多个对象的功能
3. 何时创建被组合对象的实例
(1) 一种方案是在属性上直接定义并创建需要组合的对象实例
(2) 另外一种方案是在属性上定义一个变量,来表示持有被组合对象的实例,具体实例从外部传入,也可以通过IoC/DI容器来注入