コンポジションと継承
共有する振る舞いにはコンポジションを優先します
「コンポジションと継承」はCoddyKit上の無料Angular Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAngular Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Angular Academyコースには全4レッスンが含まれています。
2つの再利用戦略
コンポーネント間でビヘイビアを共有するには、継承(基底クラスを拡張する)またはコンポジション(小さな部品を組み合わせる)を使えます。Angularの構成APIでは、コンポジションをデフォルトの選択肢とすることが推奨されます。
継承のおさらい
継承では、コンポーネントが基底コンポーネントまたはディレクティブを拡張し、その入力、出力、ロジックを再利用します。
export class FancyButton extends BaseButton {
// inherits BaseButton members
}継承の制限
クラスが拡張できる基底クラスは1つだけです。深い階層は柔軟性を失いやすく、不要な部分まで含めてすべて継承することになります。
ダイヤモンド問題
継承で複数のビヘイビアを組み合わせるには、扱いにくい継承チェーンが必要になります。コンポジションなら、多数のディレクティブを独立して適用することでこの問題を回避できます。
コンポジションのおさらい
コンポジションでは、コンポーネントの役割を絞ったまま、hostDirectivesを通じて必要な数のビヘイビアを組み合わせられます。
hostDirectives: [ElevateDirective, RippleDirective, FocusTrapDirective]コンポジションを優先する
「継承よりもコンポジションを優先する」という指針は、Angularで特に有効です。コンポジションは柔軟で、機能を追加しやすく、壊れやすい基底クラスを避けられます。
継承が適している場合
近いバリエーション間で共有する、単一で安定した基底クラスなら、継承が適している場合もあります。たとえば、基底のフォームフィールドを各バリエーションで特化させる場合です。階層は浅く保ちます。
両方の組み合わせ
アプローチを組み合わせることもできます。共有する構造には薄い基底クラスを使い、横断的な関心事にはビヘイビアを組み合わせます。
カプセル化
コンポジションでは各ビヘイビアの内部を非公開にし、選択した入力と出力だけを公開できます。一方、継承では基底クラスのAPI全体が公開されます。
コンポジションへのリファクタリング
基底クラスに無関係な責務が蓄積してきたら、それぞれをディレクティブに分割して組み合わせます。結果として、よりモジュール性とテスト容易性が高まります。
選択の指針
独立した複数のビヘイビアが必要ですか。それならコンポジションを使います。単一の共有構造が必要ですか。浅い基底クラスが適しているかもしれません。柔軟性を重視し、基本的にはコンポジションを選びます。
確認問題
コンポジションと継承についての理解を確認します。
まとめ
hostDirectivesで焦点を絞ったビヘイビアを組み合わせるコンポジションは、単一の基底クラスを使う継承より柔軟で、壊れやすい階層を避けられるため、基本的な選択肢にすべきだと学びました。継承は共有構造が必要な場合に限り、浅い階層で使います。
AI チューターと学ぶ HTML — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 38
- レッスン
- 144
よくある質問
「コンポジションと継承」レッスンは無料ですか?
はい。「コンポジションと継承」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Angular Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Angular Academyコースには全4レッスンが含まれています。
「コンポジションと継承」で何を学びますか?
共有する振る舞いにはコンポジションを優先します ブラウザで直接実行するハンズオンコードでAngular Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Angular Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAngular Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「コンポジションと継承」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAngular Academyレッスンでコードを書いて実行できますか?
はい。すべてのAngular Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。