美文网首页
10.组合vs继承

10.组合vs继承

作者: 转岗做JAVA | 来源:发表于2020-10-26 15:03 被阅读0次
    1. 为什么不推荐使用继承?

    虽然继承可以解决代码复用等的问题,但如果继承层次过深、过复杂,也会影响到代码的可维护性,而且实际场景下往往对象都会有某些特性,而导致基类分的越来越细,继承层次越来越深。

    2. 为什么推荐使用组合?

    上面的问题可以通过组合、接口和委托解决。利用接口抽象出行为定义,通过组合不同的行为来定义具体对象的所有行为,对于通用的行为,可以定义具体实现类实现,并将具体对象的通用行为委托给具体的实现类,以提高代码的复用性。

    接口+组合+委托符合矢量化思想,即将物体的特征划分为多个独立变化的维度,互不影响。

    3. 如何判断该用组合还是继承?
    • 如果类之间的继承结构稳定,层次较浅,继承关系简单,那就可以大胆使用继承,反之,就尽量使用组合来代替继承。
    • 某些设计模式会固定搭配继承或组合,比如:装饰者模式、策略模式、组合模式使用了组合,而模版模式使用了继承。
    • 某些特殊场景限制必须使用继承。比如入参类型不是接口,为了支持多态,只能采用继承实现。

    相关文章

      网友评论

          本文标题:10.组合vs继承

          本文链接:https://www.haomeiwen.com/subject/jnpcmktx.html