torutkのブログ

ソフトウェア・エンジニアのブログ

継承よりコンポジション

継承よりコンポジションをうたってる文献

Effective Java プログラミング言語ガイド(Joshua Bloch) 項目14 継承よりコンポジションを選ぶ

継承は、コードを再利用するための強力な方法ですが、常に再利用のための最善の道具とは限りません。不適切に使用されると、継承はもろいソフトウェアを作り出します。

UMLによるJavaオブジェクト設計(Peter Coad, Mark Mayfield) 第2章 継承ではなくコンポジションを利用した設計

コンポジションは柔軟性が高く、カプセル化が強いのに対し、継承は柔軟性に劣り、カプセル化も弱いのです。

オブジェクト指向における再利用のためのデザインパターン(Erich Gammaら)

オブジェクト指向設計の2つめの原理
クラス継承よりもオブジェクトコンポジションを多用すること

アジャイルソフトウェア開発の奥義(Robert C.Martin)

1995年頃には、継承は乱用されやすく、この継承の乱用によって生じるしっぺ返しはかなり高くつくことが明らかになったのだ。

ソフトウェア再利用ガイドブック―アーキテクチャ、プロセス、組織の変革による再利用ビジネス成功への道(Ivar Jacobsonら)

オブジェクト指向には、カプセル化やポリモアフィズムのようにコンポーネントをうまく開発する上での特性が多くある。しかし、誤って使用されると、コンポーネントを基本とした開発を阻害しかねないメカニズムも存在する。その1つは継承のメカニズムである。継承によって、クラスとそのスーパークラス、またはタイプとそのスーパータイプの依存性が強められることになり、コンポーネントの保守が複雑になる。