组合优于承继快报 - 威尼斯人

组合优于承继快报

2019-02-10 10:06:40 | 作者: 芷容 | 标签: 承继,目标,子类 | 浏览: 1547

面向目标体系中功用复用的两种最常用技能是类承继和目标组合(object composition)。正如咱们已解说过的,类承继答应你依据其他类的完成来界说一个类的完成。这种经过生成子类的复用一般被称为白箱复用(white-box reuse)。术语“白箱”是相对可视性而言:在承继方法中,父类的内部细节对子类可见。

  目标组合是类承继之外的另一种复用挑选。新的更杂乱的功用能够经过拼装或组合目标
来取得。目标组合要求被组合的目标具有杰出界说的接口。这种复用风格被称为黑箱复用
(black-box reuse),由于目标的内部细节是不行见的。目标只以“黑箱”的方式呈现。承继和组合各有优缺点。类承继是在编译时间静态界说的,且可直接运用,由于程序规划语言直接支撑类承继。类承继能够较方便地改动被复用的完成。当一个子类重界说一些而不是悉数操作时,它也能影响它所承继的操作,只需在这些操作中调用了被重界说的操作。可是类承继也有一些不足之处。首要,由于承继在编译时间就界说了,所以无法在运转时间改动从父类承继的完成。更糟的是,父类一般至少界说了部分子类的详细表明。由于承继对子类提醒了其父类的完成细节,所以承继常被以为“损坏了封装性” [ S n y 8 6 ]。子类中的完成与它的父类有如此严密的依靠联系,以至于父类完成中的任何改变必然会导致子类发生改变。

  当你需求复用子类时,完成上的依靠性就会发生一些问题。假如承继下来的完成不适合
处理新的问题,则父类有必要重写或被其他更适合的类替换。这种依靠联系约束了灵活性并终究约束了复用性。一个可用的处理方法就是只承继抽象类,由于抽象类一般供给较少的完成。目标组合是经过取得对其他目标的引证而在运转时间动态界说的。组合要求目标恪守互相的接口约好,进而要求更细心地界说接口,而这些接口并不阻碍你将一个目标和其他目标一同运用。这还会发生杰出的成果:由于目标只能经过接口拜访,所以咱们并不损坏封装性;只需类型共同,运转时间还能够用一个目标来代替另一个目标;更进一步,由于目标的完成是根据接口写的,所以完成上存在较少的依靠联系。

  目标组合对体系规划还有另一个效果,即优先运用目标组合有助于你坚持每个类被封装,并被会集在单个使命上。这样类和类承继层次会坚持较小规划,而且不太可能增加为不行操控的庞然大物。另一方面,根据目标组合的规划会有更多的目标 (而有较少的类),且体系的行为将依靠于目标间的联系而不是被界说在某个类中。

这导出了咱们的面向目标规划的第二个准则:
  优先运用目标组合,而不是类承继。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3
  • 4
  • 5

    hibernate缓存csdn

    数据,目标,运用
  • 6

    组合优于承继快报

    承继,目标,子类
  • 7

    跳出多层循环sina

    循环,符号,方法
  • 8

    servlet入门2alibaba

    办法,客户端,服务器
  • 9

    JAXB 的根本用法mingxing

    办法,特点,节点