정의 : 하나의 객체는 다른 객체에 대한 최소한의 이해를 유지해야합니다.
문제의 기원 : 클래스 간의 관계가 가까워 질수록 커플 링 정도가 커지고 한 클래스가 변할 때 다른 클래스에 미치는 영향이 커집니다.
솔루션 : 클래스 간의 커플 링을 최대한 최소화하십시오.
우리는 프로그래밍을 배우기 시작한 이래로 소프트웨어 프로그래밍의 일반적인 원칙 인 저 커플 링, 높은 응집력을 알고있었습니다. 프로세스 지향 또는 객체 지향 프로그래밍이든, 각 모듈 간의 커플 링을 가능한 한 낮게 유지함으로써 코드 재사용 속도를 개선 할 수 있습니다. 낮은 커플 링의 장점은 자명하지만 커플 링이 낮은 방법을 어떻게 프로그램 할 수 있습니까? 그것이 바로 Dimit Rule이 달성 할 것입니다.
최소 지식의 원칙으로도 알려진 Dimitter Law는 1987 년 미국 북동부 대학의 Ian Holland에 의해 처음 제안되었습니다. 평신도의 용어로는, 당신이 의존하는 수업에 대해 알 수 없을수록 더 좋습니다. 다시 말해, 종속 클래스의 경우 논리가 아무리 복잡하더라도 클래스 내에서 논리를 캡슐화하고 제공된 공개 방법을 제외한 외부에 정보를 누출하지 마십시오. Dimit Rule은 또한 더 간단한 정의를 가지고 있습니다. 직접 친구 와만 의사 소통합니다. 먼저, 직접 친구가 무엇인지 설명해 봅시다. 각 객체는 다른 객체와 결합 된 관계를 가질 것입니다. 두 객체 사이에 커플 링 관계가있는 한, 우리는이 두 개체가 친구 관계라고 말할 것입니다. 종속성, 연관성, 조합, 집계 등과 같은 여러 가지 방법이 있습니다. 그 중에서도 우리는 직접 친구로 나타나는 회원 변수, 메소드 매개 변수 및 메소드 리턴 값의 클래스를 호출하지만 로컬 변수의 클래스는 직접 친구가 아닙니다. 다시 말해, 클래스 내부에 로컬 변수로 나타나지 않는 것이 가장 좋습니다.
다음은 Dimit 원칙을 위반 한 예입니다.
공개 수업 교사 {public void Teacher (클래스 클래스) {classe.getStudents.getScore.show (); }}
문제는 무엇입니까? 너무 높은 커플 링.
1. 학생 수업에서 점수 클래스가 취소 될 수 있습니다.
2. 점수 클래스의 쇼 메소드도 삭제 될 수 있습니다.
학생 수업과 점수 수업은 모두 당신에게 익숙하지 않으며 언제 변화시기를 알지 못할 수도 있습니다.
우리는 그것을 수정할 수 있습니다.
공개 수업 교사 {public void Teacher (클래스 클래스) {class.showscore (); }} 공개 클래스 클래스 {public void showscore (학생 학생) {student.showscore (); }} 공개 클래스 학생 {점수 점수; public void showcore () {score = 새로운 점수 (80); score.show (); }}
요약 :
1. Dimit의 법칙의 장점은 클래스 간의 커플 링을 줄이는 것입니다.
2. 단점은 더 작은 방법을 생성하여 시스템을 더 지저분하게 만들고 통신 효율성이 줄어들 것입니다.
3. 설계 모드의 응용 프로그램 : Facade Mode (Facade Mode) 및 중재자 모드 (중재자 모드).