[解決済み】依存関係逆転の原則とは何ですか、なぜそれが重要なのですか?
2022-04-11 16:37:43
質問
依存関係逆転の原則とは何か、なぜそれが重要なのか。
どのように解決するのですか?
このドキュメントをご覧ください。 依存関係逆転の原則 .
基本的にはこう書いてある。
- 高レベルのモジュールは低レベルのモジュールに依存してはならない。どちらも抽象化されたものに依存すべきです。
- 抽象化は決して詳細に依存してはならない。詳細は抽象に依存すべきです。
なぜ重要かというと、簡単に言うと、変更はリスクが高いからです。実装ではなく概念に依存することで、呼び出し側での変更の必要性を減らすことができるのです。
DIPは、異なるコード間の結合を効果的に低減します。例えば、ロギング機能を実装する方法はたくさんありますが、その使用方法は時間的に比較的安定しているはずだという考え方です。ロギングの概念を表すインターフェースを抽出できれば、このインターフェースは、その実装よりも時間的にはるかに安定しているはずで、呼び出しサイトは、そのロギングメカニズムを維持または拡張している間に行うことができる変更の影響をはるかに少なくするはずです。
また、実装をインターフェースに依存させることで、特定の環境に適した実装をランタイムに選択できる可能性があります。場合によっては、これも面白いかもしれません。
関連
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Inversion of Controlとは?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] mixinとは何か、なぜ有用なのか?
-
[解決済み] リスコフ置換原理の例として、どのようなものがありますか?
-
[解決済み] パブリック、プライベート、プロテクトの違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み] プライベートとプロテクト-ビジビリティ・グッド・プラクティスの懸念点【終了しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] フレームワークとライブラリの違いは何ですか?
-
[解決済み] インターフェースとベースクラス
-
[解決済み] Java のコア・ライブラリにおける GoF デザイン・パターンの例
-
[解決済み] Inversion of ControlとDependency Injectionの比較
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み] Abstract FactoryとFactoryのデザインパターンの違いは何ですか?
-
[解決済み] 抽象クラスの代わりにインターフェイスを使用する場合とその逆は?
-
[解決済み】コンストラクターとファクトリーメソッドの比較【終了しました
-
[解決済み] Delegateとは?[クローズド]。
-
[解決済み] オブジェクト指向プログラミングにおける「インターフェイス」の定義とは?