본문 바로가기

스프링 입문을 위한 자바 객체 지향의 원리와 이해

[스프링 입문을 위한 자바 객체 지향의 원리와 이해] ISP - 인터페이스 분리 원칙

"클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다."
- 로버트 C. 마틴

 

 

1) 단일 책임 원칙 리뷰

- 단일 책임 원칙(SRP) 예제를 다시 살펴보자.

  단일 책임 원칙을 적용하기 전 남자 클래스는 아래와 같았다. 

 

-단일 책임 원칙을 적용한 후에는 아래처럼 단일 책임을 갖는 클래스로 나뉘었다. 

 

2) 인터페이스 분할 원칙

-단일 책임 원칙에서 제시한 해결책은 남자 클래스를 토막내서 하나의 역할(책임)만 하는

 다수의 클래스로 분할하는 것이다.  

 그런데 이 때, 다른 방법인 ISP, 즉 인터페이스 분할 원칙도 선택 가능하다. 

 

- 남자 클래스를 여자친구를 만날 때는 남자친구 역할만 할 수 있게 인터페이스로 제한하고,

  어머니와 있을 때는 아들 인터페이스로 제한하고,

  직장 상사 앞에서는 사원 인터페이스로 제한하고,

  소대장 앞에서는 소대원 인터페이스로 제한하는 것이 바로 인터페이스 분할 원칙의 핵심인 것이다.  

 

- 결론적으로 단일 책임 원칙(SRP)와 인터페이스 분할 원칙(ISP)은 

  같은 문제에 대한 두 가지 다른 해결책이라고 볼 수 있다.

  프로젝트 요구사항과 설계자의 취향에 따라 

  단일 책임 원칙이나 인터페이스 분할 원칙 중 하나를 선택해서 설계할 수 있다. 

  하지만 특별한 경우가 아니라면 단일 책임 원칙을 적용하는 것이 더 좋은 해결책이라고 할 수 있다.