面向对象功能复用的两种最常用技术是类继承和对象组合(object composition)。
继承和组合都能达到一个代码复用的效果,但是类的继承通常是白箱复用,对象组合通常为黑箱复用。
类继承是白箱复用,被继承的类对其继承者是透明的。因此会破坏其内部结构。之间的依赖程度高。
对象组合是黑箱复用,对象之间对彼此的结构不清楚,只需要关心接口。对象之间的依赖低。
因此优先使用对象组合。
面向对象功能复用的两种最常用技术是类继承和对象组合(object composition)。
继承和组合都能达到一个代码复用的效果,但是类的继承通常是白箱复用,对象组合通常为黑箱复用。
类继承是白箱复用,被继承的类对其继承者是透明的。因此会破坏其内部结构。之间的依赖程度高。
对象组合是黑箱复用,对象之间对彼此的结构不清楚,只需要关心接口。对象之间的依赖低。
因此优先使用对象组合。