본문 바로가기

프로그래밍

디미터 법칙

소프트웨어 개발 가이드라인 중 하나


최소 지식 원칙

 - 한 모듈이 구현을 알아야하는 다른 모듈들을 적게 유지하자

 - 결합도가 높으면 모듈을 재사용하기 힘들다


모듈들 사이의 결합도를 줄여 코드 품질을 높이는 것


규칙화

 - 어떤 오브젝트(O)의 메서드(m)는 다음과 같은 오브젝트의 메서드만 호출해야 한다

- O 자신의 메서드

- m의 매개변수로 들어온 객체의 메서드

- m 안에서 생성 된 객체

- O의 컴포넌트 (A의 인스턴트 변수)

- 전역 객체


예제

class A {
    private B b;
    public setA(B b) {
        b = b;
    }
    public myMethod(OtherObject other) {
        // ...
    }
    /* 디미터의 법칙을 잘 따른 예 */
    public okLawOfDemeter(Paramemter param) {
        myMethod();     // 자신의 메소드
        b.method();     // 자신의 멤버의 메소드
        Local local = new Local();
        local.method();    // 직접 생성한 객체의 메소드 
        param.method();    // 메소드의 인자로 넘어온 메소드
    }
    /* 디미터의 법칙을 어긴 예 */
    public violateLawOfDemeter(Paramemter param) {
        C c = param.getC();
        c.method();    // 인자로 받은 객체에서의 호출.
        param.getC().method();      // 위와 같음.
    }
}


출처: https://coding-start.tistory.com/264 [코딩스타트]


[참조]

https://www.slideshare.net/SangminLim/ss-63457159

https://coding-start.tistory.com/264

'프로그래밍' 카테고리의 다른 글

OWASP Top 10 2020  (0) 2020.10.04
FQDN - Fully Qualified Domain Name  (0) 2020.07.06
GRASP 패턴  (0) 2020.04.22
TDD, BDD, DDD, RDD  (0) 2020.04.21
GraphQL  (0) 2019.10.01