"클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다."
- 로버트 C. 마틴
1) 단일 책임 원칙 리뷰
- 단일 책임 원칙(SRP) 예제를 다시 살펴보자.
단일 책임 원칙을 적용하기 전 남자 클래스는 아래와 같았다.
-단일 책임 원칙을 적용한 후에는 아래처럼 단일 책임을 갖는 클래스로 나뉘었다.
2) 인터페이스 분할 원칙
-단일 책임 원칙에서 제시한 해결책은 남자 클래스를 토막내서 하나의 역할(책임)만 하는
다수의 클래스로 분할하는 것이다.
그런데 이 때, 다른 방법인 ISP, 즉 인터페이스 분할 원칙도 선택 가능하다.
- 남자 클래스를 여자친구를 만날 때는 남자친구 역할만 할 수 있게 인터페이스로 제한하고,
어머니와 있을 때는 아들 인터페이스로 제한하고,
직장 상사 앞에서는 사원 인터페이스로 제한하고,
소대장 앞에서는 소대원 인터페이스로 제한하는 것이 바로 인터페이스 분할 원칙의 핵심인 것이다.
- 결론적으로 단일 책임 원칙(SRP)와 인터페이스 분할 원칙(ISP)은
같은 문제에 대한 두 가지 다른 해결책이라고 볼 수 있다.
프로젝트 요구사항과 설계자의 취향에 따라
단일 책임 원칙이나 인터페이스 분할 원칙 중 하나를 선택해서 설계할 수 있다.
하지만 특별한 경우가 아니라면 단일 책임 원칙을 적용하는 것이 더 좋은 해결책이라고 할 수 있다.
'스프링 입문을 위한 자바 객체 지향의 원리와 이해' 카테고리의 다른 글
[스프링 입문을 위한 자바 객체 지향의 원리와 이해] 객체 지향은 절차적/구조적 프로그래밍의 어깨를 딛고 (0) | 2024.12.24 |
---|---|
[스프링 입문을 위한 자바 객체 지향의 원리와 이해] DIP - 의존 역전 원칙 (0) | 2024.12.19 |
[스프링 입문을 위한 자바 객체 지향의 원리와 이해] LSP - 리스코프 치환 원칙 (0) | 2024.12.18 |
[스프링 입문을 위한 자바 객체 지향의 원리와 이해] OCP - 개방 폐쇄 원칙 (0) | 2024.12.18 |
[스프링 입문을 위한 자바 객체지향의 원리와 이해] 단일 책임 원칙 (0) | 2024.12.18 |