디자인 모델인 디미트의 법칙에 깊이 파고들다
1820 단어 java 디미트 법칙
1. 디미트 원칙 소개
2. 리디미트의 원칙을 코드로 시범
3. 요약
1. 디미트 원칙 소개
정의: 1) 한 대상은 다른 대상에 대해 최소한의 이해를 유지해야 한다.
다시 말하면 디미트 원칙의 특징은 바로 직접 친구와 통신하는 것이다.
직접 친구: 모든 대상은 다른 대상과 결합 관계를 가진다. 결합 관계만 있으면 우리는 이 두 대상 사이가 친구 관계라고 말한다.그 중에서 우리는 구성원 변수, 방법 매개 변수, 방법 반환 값에 나타난 클래스를 직접적인 친구라고 하지만 국부 변수에 나타난 클래스는 직접적인 친구가 아니다.즉, 낯선 클래스는 국부 변수의 형식으로 클래스 내부에 나타나지 않는 것이 좋다.
문제설명: 만약에 우리가 학생 관리 시스템을 가지고 있다면 교사는 그의 모든 학생의 성적 목록을 조회해야 한다.이것은 두 가지 조작이 필요하다. 1) 모든 학생을 조사한 다음에 학생의 대응 성적을 조사한다. 이때 성적을 검사하는 이 조작은 학생 리스트에 넣고 조회하고 직접 되돌려야 한다. 교사의 서비스가 아니라 먼저 학생을 조사한 다음에 점수를 조사해야 한다. 점수는 교사 서비스의 직접적인 친구가 아니기 때문이다.
해결 방법: 조회 점수를 학생 서비스에 넣고 진행
2. 코드로 역전원칙 의존 시범
수정 전에 Teacher Service에서 학생 및 점수를 질의했습니다.
public List queryScope(){
List students = studentService.queryStudentByTeacher(UserUtil.getCurrent().getId());
List res = scoperService.queryScopeByStudents(students);
return res;
}
수정되면 Teacher Service에서 학생을 조회하고 Student Service에서 점수를 조회합니다.
public List queryScope(){
List students = studentService.queryStudentByTeacher(UserUtil.getCurrent().getId());
return students;
}
public List queryStudentByTeacher(){
List students = studentService.queryStudentByTeacher(UserUtil.getCurrent().getId());
List res = this.queryScopeByStudents(students);
return res;
}
3. 요약
디미트 법칙은 클래스 간의 결합을 낮추기 위해 설계된 것으로 모든 클래스가 의존을 줄였기 때문에 결합 관계를 확실히 낮출 수 있다.그러나 매사에 도량이 있고 직접적인 관계를 줄였지만 간접적인 관계를 가진다. 이 법칙을 사용하면 대량의 간접적인 관계가 생길 수 있기 때문에 이 원칙을 사용할 때 반복적으로 따져 구조가 뚜렷하고 내부 집합과 낮은 결합을 해야 한다.