0Pricing
Angular Academy · 课时

组合与继承

对于共享行为,优先使用组合

组合与继承 是 CoddyKit 上的免费 Angular Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Angular Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Angular Academy 课程共包含 4 节课。

两种复用策略

要在组件之间共享行为,可以使用继承(扩展基类),也可以使用组合(组合更小的部分)。Angular 的组合 API 使组合成为首选方案。

继承回顾

使用继承时,组件会扩展一个基础组件或指令,并复用它的输入、输出和逻辑。

export class FancyButton extends BaseButton {
  // inherits BaseButton members
}

继承的局限

一个类只能扩展一个基类。层次过深会变得僵化,而且您会继承全部内容,包括不需要的部分。

菱形问题

如果通过继承组合多种行为,就必须使用复杂而不自然的继承链。组合则通过独立应用多个指令避开了这一问题。

组合回顾

使用组合时,组件可以保持专注,并通过 hostDirectives 引入所需行为,按需混合任意数量的行为。

hostDirectives: [ElevateDirective, RippleDirective, FocusTrapDirective]

优先使用组合

“优先使用组合而不是继承”这一指导原则在 Angular 中尤其适用:组合灵活、可叠加,还能避免脆弱的基类。

继承仍然适用的场景

如果多个紧密相关的变体共享一个稳定的基类,继承也很合适,例如由不同变体专门化一个基础表单字段。请保持继承层次浅。

混合使用两者

您可以结合使用这两种方式:通过扩展精简的基类共享结构,同时组合行为来处理横切关注点。

封装

组合会将每个行为的内部实现保持私有,只公开选定的输入和输出;而继承会公开整个基类 API。

向组合方式重构

当基类逐渐积累起彼此无关的职责时,请将每项职责拆分为一个指令并进行组合。这样得到的结果更加模块化,也更易于测试。

决策指南

需要多个相互独立的行为吗?使用组合。需要单一的共享结构基础吗?可以使用浅层基类。为了保持灵活性,默认优先使用组合。

快速检查

测试您对组合与继承的理解。

回顾

您了解到,组合(通过 hostDirectives 组合职责集中的行为)比继承(使用单一基类)更加灵活,能够避免脆弱的继承层次,因此应作为默认方案;继承则仅应在需要共享结构时以浅层形式使用。

常见问题解答

「组合与继承」课时是免费的吗?

是的 — 「组合与继承」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Angular Academy 课程的其余内容,请升级到 CoddyKit PRO。 Angular Academy 课程共包含 4 节课。

「组合与继承」这节课中我会学到什么?

对于共享行为,优先使用组合 你通过在浏览器中直接运行的动手代码来练习 Angular Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Angular Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Angular Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「组合与继承」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Angular Academy 课中编写并运行代码吗?

能。每节 Angular Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. hostDirectives 属性
  2. 公开输入与输出
  3. 构建可复用行为
  4. 组合与继承
← 返回 Angular Academy