※ 클라이언트-서버 모델
- 두 객체 사이의 협력 관계를 설명하기 위해 사용하는 전통적인 메타포
- 객체가 독립적으로 수행할 수 있ㄴ 넋보다 더 큰 책임을 수행하기 위해서는 다른 객체와 협력해야 한다.
◎ 용어 정리
- 메시지: 객체가 다른 객체와 협력하기 위해 사용하는 의사소통 매커니즘
- 오퍼레이션: 객체(수신자)가 다른 객체(송신자)에게 제공하는 추상적인 서비스, 메세지 수신자의 관점만을 다룸
- 메서드: 메시지에 응답하기 위해 실행되는 코드 블록, 오퍼레이션의 구현
- 퍼블릭 인터페이스: 객체가 협력하기 위해 외부에서 수신할 수 있는 메시지의 묶음
- 이 글에서는 java에 interface에 한정 짓지 아니함
- 시그니처 : 오퍼레이션이나 메서드의 명세를 나타낸 것
◎ 좋은 인터페이스 설계
- 좋은 인터페이스란?
→ 최소한의 인터페이스와 추상적인 인터페이스
→ 책임 주도 설계 방법을 따르기 (메세지를 먼저 선택함으로써 무관한 오퍼레이션이 스며드는 것 방지)
- 퍼블릭 인터페이스의 품질에 영향을 미치는 원칙
- 디미터 법칙, 묻지 말고 시켜라, 의도를 드러내는 인터페이스, 명령-쿼리 분리
◎ 디미터 법칙
- 협력하는 객체의 내부 구조에 대한 결합으로 인해 발생하는 설계 문제를 해결하기 위해 제안된 원칙
- 객체의 내부 구조에 강하게 연결되지 않도록 협력 경로를 제한하라
- 효과
- shy code를 작성할 수 있다.
- 불필요한 어떤 것도 다른 객체에게 보여주지 않으며, 다른 객체의 구현에 의존하지 않는 코드
- 클라이언트와 서버 간의 낮은 결합도를 유지할 수 있다.