Notice
suyeonme
[디자인 패턴] 최소 지식 원칙(Principle of Least Knowledge) 본문
최소 지식 원칙(Principle of Least Knowledge)이란?
최소 지식 원칙에 따르면 객체 사이의 상호작용은 될 수 있으면 아주 가까운 '친구'사이에만 허용하는 편이 좋다. 즉 상호 작용하는 객체들은 다른 객체가 어떤 상태를 갖고 있는지 속사정을 몰라야한다. 여러개의 dot(.)을 사용하지 말라는 법칙으로 많이 알려져있다.
* 데메테르 법칙(Law of Demeter), Don't talk to strangers(낯선이에게 말하지 마라) 모두 같은 의미이다.
최소 지식 원칙은 객체 지향 프로그래밍에서 기본적이지만 중요한 개념이다. 최소 지식 원칙을 준수할 경우, 여러 클래스가 복잡하게 얽혀있어서 시스템의 한 부분을 변경했을 때 다른 부분까지 줄줄이 고쳐야하는 상황을 방지할 수 있다.
최소 지식 원칙 가이드라인
최소 지식 원칙을 준수하기 위한 즉 '친구를 만들지 않는' 가이드라인이다. 이 때 다른 메소드를 호출해서 리턴받은 객체의 메소드를 호출하는 것은 바람직하지않다.
- 객체 자체
- 메소드에 매개변수로 전달된 객체
- 메소드를 생성하거나 인스턴스를 만든 객체
- 객체에 속하는 구성요소(인스턴스 변수에 의해 참조되는 객체, 즉 "A에는 B가 있다"라는 관계에 있는 객체를 의미)
원칙을 따르지 않은 경우
public float getTemp() {
// station으로부터 themometer 객체를 받은 다음, 그 객체의 getTemperature()를 직접 호출
Thermometer thermometer = station.getThermometer();
return thermometer.getTemperature();
}
원칙을 따르는 경우
public float getTemp() {
// thermometer에게 요청을 전달하는 메소드를 station 클래스에 추가(의존해야 하는 클래스의 개수 감소)
return station.getTemperature();
}
'프로그래밍👩🏻💻 > 디자인 패턴' 카테고리의 다른 글
[디자인패턴] 템플릿 메소드 패턴(Template Method Pattern) (0) | 2022.08.07 |
---|---|
[디자인패턴] 상속(Inheritance) vs 조합(Composition) (0) | 2022.07.17 |
[디자인 패턴] 어댑터 패턴(Adapter Pattern), 퍼사드 패턴(Facade Pattern) (0) | 2022.07.11 |
[디자인 패턴] 커맨드패턴(Command Pattern) (0) | 2022.07.10 |
[디자인 패턴] 싱글톤 패턴(Singleton Pattern) (0) | 2022.07.04 |
Comments