はじめに
本記事は、私が初めてSOLID原則を学んだ際に、理解しきれなかった依存性逆転の原則の"逆転"の意味を自分なりの理解でまとめています。
依存性逆転の原則とは
メンテナンスしやすいソフトウェア開発をするための原則であるSOLID原則の中の1つです。
SOLID原則についてはこちらの記事で分かりやすくまとめられています。
依存性逆転の原則は、上位モジュールは下位モジュールに依存すべきでなく、どちらも抽象に依存すべきという原則です。加えて、抽象は詳細に依存せずに詳細が抽象に依存すべきという原則も含まれています。
簡単に表現すると、上位モジュールは下位モジュールを利用するけど、下位モジュールとはインターフェース(抽象)を介してやり取りしなさいということです。
初めて依存性逆転の原則を学んだときに私が思ったこと
原則の意味はある程度分かりましたが、"逆転"の意味がいまいちわかりませんでした。
何がどう逆転しているんだ?という状態でした。その後、実際に原則を使ってみたり、いくつか書籍を読む中で何となく"逆転"の意味が見えてきました。
私が思う"逆転"の意味
処理の流れと依存の向きが逆転していることを表していると私は思いました。
例えば、コンピュータとコンピュータが利用する四則演算機を考えてみます。
四則演算機には加減乗除の4つの計算をするためのメソッドがあり、コンピュータがそれを直接呼びだしている場合、処理の流れと依存の向きは同じになります。
ですが、コンピュータと同じ上位レベルで四則演算機用のインターフェースがあり、それを四則演算機が実現し、コンピュータはインターフェース経由で四則演算機を利用している場合には、処理は前と変わず上位から下位に流れますが、依存の向きは下位から上位の向きになります。つまり処理が上位から下位に流れているのに対して、依存は下位から上位に向かっており、処理の流れと依存の向きが逆転しているのです。
まとめ
この記事では、依存性逆転の原則の"逆転"の意味を自分なりにまとめました。
あくまで自分の考えなので、参考程度にご覧いただければ嬉しいです。