0009 - Composition over inheritance

ID:ADR-0009

状态:

进行中

发表于:

2022-07-25

背景和问题陈述​

目前,我们的 Angular 应用程序严重依赖继承。虽然这在当时似乎是一个很自然的决定,因为它允许我们在不同领域之间快速共享代码。但这也导致了紧密耦合,因此难以理解变更会产生的影响。它还助长了大型页面级组件的出现。

考虑的方案​

  • 什么也不做 -- 维持现状,这并不是一个真正的选择。

  • 优先选择组合而不是继承 -- 将组件拆分成只做一件事的小组件。保持组件精简,并主要使用服务来共享功能。

决策结果​

选择的方案:优先选择组合而不是继承

积极的后果​

  • 更轻巧的组件。

  • 更好地理解变更所产生的影响,因为它现在仅被隔离到单个组件。

消极的后果​

  • 继承性更容易理解。

最后更新于