コンテンツへスキップ
uencoder

Composition over Inheritance

「継承より合成」は、振る舞いを継承ではなく他のオブジェクトの包含によって構築することを推奨する設計原則であり、脆い基底クラスと深い継承連鎖を避ける。

目的

柔軟で保守しやすいオブジェクト関係を設計し、継承の結合度と脆さを回避する。

メカニズム

has-a 関係(合成)が is-a 関係(継承)より優先される。合成では実行時にコンポーネントを差し替えられるのに対し、継承はコンパイル時に固定される。Strategy パターンと Decorator パターンは合成を用いる。インターフェースと合成の組み合わせにより、継承なしで多態性を実現できる。

ユースケース

  • オブジェクト指向設計
  • デザインパターン
  • コードアーキテクチャ

関連用語

References