依存性逆転の原則(Dependency Inversion Principle)

SOLID原則のひとつ。

上位モジュールは下位モジュールに依存してはいけない。どちらのモジュールも抽象に依存すべき。

抽象は実装の詳細に依存してはならない。実装の詳細が抽象に依存すべき。

internal class BClz
{
  internal string GetGreet() => "こんにちは";
}

public class AClz
{
  public void Greet()
  {
    var b = new BClz(); // Bに依存
    System.Console.WriteLine(b.GetGreet());
  }
}

上記のコードは以下の図のように、AClzがBClzに依存している。

逆転とあるので、やりたいことは以下の図。

これを実現するためには、

  • BClzのインターフェイスIBClzを容易する。
  • IBClzを継承してBClzを実装する。
  • AClzはIBClzに依存させる。

実装方法は以下の方法で行う。

ttkcd.hatenablog.com