객체가 다른 객체와 상호작용 할 때, 그 객체의 내부 구조나 구현에 대해 알지 못하도록 하는 원칙

객체가 자신이 직접적인 책임을 지고 있는 객체와만 상호작용 해야한다. [[객체의 책임]]

디미터의 법칙을 지키려면 다음의 상호작용만 하도록 해야함.
1. 자기 자신과만 상호작용한다.
2. (매개변수 등으로) 전달받은 객체하고만 상호작용 한다.
3. 반환값이 자신과 직접 연결된 객체가 아니면 그 객체의 메서드를 호출하지 않는다.

뭔소리냐?  GPT에게 물어봤더니

getDriverName(){ return this.driver.name; } 이렇게 직접 driver의 property 에 접근하지 말고 this.driver.getName(); driver가 제공하는 함수를 통해서만 사용하라는 의미인거야?

맞습니다! 정확히 그런 의미입니다.

==디미터의 법칙을 지키려면, `Car` 객체가 `Driver` 객체의 **속성(property)**에 직접 접근하는 것을 피하고, `Driver` 객체가 제공하는 **메서드**를 통해서만 정보를 얻도록 해야 합니다.==

즉, `this.driver.name`처럼 `Driver` 객체의 **속성에 직접 접근**하는 것이 아니라, `this.driver.getName()`과 같은 **메서드를 통해** 정보를 요청해야 한다는 것입니다. 이렇게 하면 `Car` 객체는 `Driver` 객체의 구현 세부 사항을 알지 못하고, `Driver` 객체가 제공하는 인터페이스만을 사용하게 됩니다.
