第11章 DIP: 依存関係逆転の原則
SOLID原則のうちの D
DIP
ソースコードの依存関係が具象ではなく、抽象だけを参照しているもの
Javaのような言語なら、use
,import
,include
で指定する参照先をインターフェースや抽象クラスなどの抽象宣言だけを含むソースモジュールに限定するということ
依存したくないのは、OSやプラットフォーム周りの変化しない具象ではなく、システム内の変化しやすい具象
安定したソフトウェアアーキテクチャは変化しやすい具象への依存を避け、安定した抽象インターフェイスに依存すべき
これをコーディングレベルのプラクティスにまとめると
- 変化しやすい具象クラスを参照しない
- 代わりに抽象インターフェイスを参照する
- Abstract Factoryパターン
- 変化しやすい具象クラスを継承しない
- 上記のルールに含まれる
- 具象クラスをオーバーライドしない
- 具象関数はソースコードの依存を要求することが多い
- 変化しやすい具象を名指しで参照しない
- 単にDIPを言い換えたものに過ぎない
感想
大学の授業で、結構Abstractを書かされて、それを具象化して実装ということをやったけど、
その度に、これは別に親クラスを継承して、オーバーライドすればよくないと思っていた
(抽象クラスを作ると無駄に手間がかかるし)
この章を読むと、授業だと一回きりのコード(ある意味変化しないコード)になるからあんまり恩恵を受けなかったのかと今更ながらに理解した