gpt4 book ai didi

language-agnostic - 更喜欢组合而不是继承?

转载 作者:行者123 更新时间:2023-12-01 16:28:43 25 4
gpt4 key购买 nike

为什么更喜欢composition instead of inheritance ?每种方法都有哪些权衡?相反的问题:我什么时候应该选择继承而不是组合

最佳答案

优先选择组合而不是继承,因为它更具延展性/以后更容易修改,但不要使用始终组合的方法。通过组合,可以轻松地通过依赖注入(inject)/动态更改行为二传手。继承更加严格,因为大多数语言不允许您从多种类型派生。所以一旦你从A型衍生出来,鹅或多或少就已经熟了。

我对上述内容的严峻测试是:

  • TypeB 是否希望公开 TypeA 的完整接口(interface)(不少于所有公共(public)方法),以便可以在需要 TypeA 的地方使用 TypeB?表示继承

    • 例如塞斯纳双翼飞机将暴露飞机的完整界面,甚至更多。所以这使得它适合从 Airplane 派生。
  • TypeB 是否只想要 TypeA 公开的部分/部分行为?表示需要组合。

    • 例如鸟可能只需要飞机的飞行行为。在这种情况下,将其作为接口(interface)/类/两者提取出来并使其成为两个类的成员是有意义的。

更新:刚刚回到我的答案,现在看来,如果没有具体提及 Barbara Liskov 的 Liskov Substitution Principle ,它是不完整的。作为“我应该继承这种类型吗?”的测试

关于language-agnostic - 更喜欢组合而不是继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62095821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com