あるクラスのメソッドを呼び出していいオブジェクトは4種類

  • オブジェクト自身
  • インスタンス変数
  • 引数として渡されたオブジェクト
  • 直接インスタンス化したオブジェクト

オブジェクトAオブジェクトBを呼ぶのはOKだが、オブジェクトAオブジェクトBを介してオブジェクトCを呼び出すのはNG。

  • オブジェクトAオブジェクトBの内部構造を超えて、オブジェクトCの知識まで要求されてしまうため
  • この法則を守ることでオブジェクトの内部構造への依存が減るため、変更に対して柔軟になる。
  • 平易にいうならば1行で2つドットを使わないということ
    • a.b.c()

簡単な例として、犬を散歩に連れ出すことを考える。この際、犬の足に直接「歩け」と命じるのはおかしいだろう。この場合は、犬に対して命令し、自分の足の面倒は自分で見させるのが正しい方法だといえる。[3]