
最初は、この原則は「実装に対してではなくインタフェー
スに対してプログラミングする」という原則によく似ている
ように感じられますが、この依存関係反転の原則のほうが抽
象化についてさらに強く主張しています。この原則は、高水
準コンポーネントは低水準コンポーネントに依存すべきでは
なく、むしろどちらも抽象に依存すべきであるというもので
す。
しかし、いったいこれは何を意味するのでしょうか?
それではまず、前のページのピザ店の図を再度よく見てく
ださい。
PizzaStore
は「高水準コンポーネント」であり、ピザ
実装は「低水準コンポーネント」です。
PizzaStore
は明らかに
具象ピザクラスに依存しています。
この原則は、高水準モジュールであれ低水準モジュールで
あれ、具象クラスではなく抽象に依存するようにコードを書
くべきだというものです。
しかし、どのようにすればよいのでしょうか?
非常に依存
関係の多い
PizzaStore
実装にこの原則を適用する方法を考えて
みましょう。
コード内での具象クラスへの依存関係を減らすことは、明
らかに「よいこと」です。実際に、この概念を形式化する
OO
設計原則があります。この原則には依存関係反転の原則
(
Dependency Inversion Principle
)という偉そうな正式名称さえ
あります。
以下にこの汎用的な原則を示します。
依存関係反転の原則
これでまたひとつ、経営幹部
を感心させるフレーズが増え
ました!
この本の購入代金よ
りも多くの昇給を得ることが
でき、同僚の開発者からも賞 ...