デメテルの法則
より形式的に言えば、関数に対するデメテルの法則に従った場合、オブジェクトO上のメソッドMが呼び出してもよいメソッドは以下のオブジェクトに属するメソッドのみに限定される。
Oそれ自身
Mの引数に渡されたオブジェクト
Mの内部でインスタンス化されたオブジェクト
Oを直接的に構成するオブジェクト(Oのインスタンス変数)
具体的には、他のメソッドの戻り値として返されたオブジェクトのメソッドの呼び出しを避けるということになる。最近のオブジェクト指向言語の多くではフィールド識別子としてドット(.)が採用されているが、そのような言語においてはこの法則は単純に「使えるドットは1つだけ」と言い表すこともできる。つまり、"a.b.Method()"という呼び出しは法則に違反しているが"a.Method()"という呼び出しは問題ない。なお、このアプローチの充足性については反論がある。
簡単な例として、犬を散歩に連れ出すことを考える。この際、犬の足に直接「歩け」と命じるのはおかしいだろう。この場合は、犬に対して命令し、自分の足の面倒は自分で見させるのが正しい方法だといえる。