合成复用原则

suaxi
2022-08-27 / 0 评论 / 48 阅读 / 正在检测是否收录...

定义:尽量先使用组合或聚合等关联关系来实现,其次才考虑使用继承关系来实现

类的复用通常分为:继承复用、合成复用

  • 继承复用

    • 破坏了类的封装性,将父类的实现细节暴露给了子类,父类对子类是透明的,这种复用又称为“白箱”复用
    • 耦合度高,父类的实现的任何变化都会导致子类的实现发生变化,不利于类的维护和扩展
    • 灵活性低,从父类继承而来的实现是静态的,在编译时已定义,所以在运行时不可能发生变化
  • 合成复用(可将已有对象纳入新对象中,使之成为新对象的一部分,新对象可以调用已有对象的功能)

    • 维持了类的封装性,因为成员对象的内部细节是新对象看不见的,所以又称为“黑箱”复用
    • 耦合度低,可以在类的成员位置声明抽象
    • 灵活性高,这种复用可以在运行时动态进行,新对象可以动态的引用与成员对象类型相同的对象

以汽车分类管理为例:

汽车按动力源可分为汽油车、新能源车;按颜色可分为白色、红色;如果同时考虑这两种成分,会产生多种组合

6.1合成复用原则.png

可以看出使用继承复用会产生很多子类,如果要添加新的能源类型的车,就需要再定义的类

6.2合成复用原则.png

0

评论 (0)

取消