質問: プログラミングについて勉強していると以下のような図がでてきました。 ![依存関係逆転](https://teratail.storage.googleapis.com/uploads/contributed_images/7500887e7b7dbd4ebd7719c3103e1167.png) 左側が通常のフローで、インターフェースを取り入れた依存関係逆転を適用したものが右側です。 読んでいる本には次のように書いてありました。 > > モジュール1がモジュール2を呼び出している。インターフェース経由で呼び出しているところがソースコードの仕掛けである。実行時には、インターフェースは存在しない。モジュール1はモジュール2を呼び出すだけだ。 > > モジュール1とインターフェースの依存関係(継承関係)が、制御の流れと逆転していることに注目してほしい。これは依存関係逆転と呼ばれ、ソフトウェアアーキテクチャに大きな影響を与えた。 > > > とありました。 右側の依存関係を見ると「モジュール1」→「インターフェース」 制御の流れを見ると「モジュール1」→「モジュール2」-(継承)→「インターフェース」 となっています。 どちらもインターフェースに最終的にたどり着き、「依存関係」と「制御の流れ」が逆転しているようには見えないのですが、なぜこれを「依存関係逆転」と呼ぶのでしょうか?
回答: 制御の流れ、というのは実行時の話であって、継承関係はむしろ依存関係の方です。 モジュール2はインターフェースに依存していますよね?