1.5 KiB
1.5 KiB
객체가 다른 객체와 상호작용 할 때, 그 객체의 내부 구조나 구현에 대해 알지 못하도록 하는 원칙
객체가 자신이 직접적인 책임을 지고 있는 객체와만 상호작용 해야한다. 객체의 책임
디미터의 법칙을 지키려면 다음의 상호작용만 하도록 해야함.
- 자기 자신과만 상호작용한다.
- (매개변수 등으로) 전달받은 객체하고만 상호작용 한다.
- 반환값이 자신과 직접 연결된 객체가 아니면 그 객체의 메서드를 호출하지 않는다.
뭔소리냐? 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 객체가 제공하는 인터페이스만을 사용하게 됩니다.