본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.




ISP : 인터페이스 분리 원칙


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


단일 책임 원칙(SRP) 여기에서 봤던 내용을 보면 남자 클래스를 다수의 클래스로 토막내어 사용하였다. 너무 잔인하다는 생각이 든다면 선택할 수 있는 방법이 ISP 즉 인터페이스 분할 원칙이다.



남자클래스를 SPR처럼 토막내어 사용하는 것이 아니라 인터페이스로 제한하여 사용하는 것이 인터페이스 분할 원칙의 핵심이다. 결론적으로 단일 책임 원칙(SRP)과 인터페이스 분할 원칙(ISP)은 같은 문제에 대한 두 가지 해결책이라고 볼 수 있다. 설계자와 요구사항에 따라 선택해서 설계할 수 있다. 하지만 특별한 경우가 아니라면 단일 책임 원칙을 적용하는 것이 더 좋은 해결책이라고 할 수 있다.(왜..? 왜일까..)


인터페이스 분할 원칙을 이야기할 때 항상 함께 등장하는 원칙 중하나로 인터페이스 최소주의 원칙이라는 것이 있다. 인터페이스를 통해 메서드를 제공할 때 최소한의 메서드만 제공하라는 것이다. 그리고 상위클래스는 풍성할 수록 좋고, 인터페이스는 작을 수록 좋다고 했다.



빈약한 상위 클래스인 경우 하위 클래스인 학생과 군인은 같은 속성인 생일, 주민번호와 같은 메서드인 자다(), 소개하다()를 공통적으로 가지고 있는 것을 볼 수 있다.


풍성한 상위 클래스인 경우에는 상위 클래스가 하위 클래스들이 공통으로 가질 수 있는 속성과 메서드를 상속해주고 있다.


위 다이어그램을 토대로 코딩을 하게 되면 빈약한 상위 클래스를 이용하는 것보다 풍성한 상위 클래스를 사용하는 것이 불필요한 형변환이 없고, 사용가능한 부분이 많은 것을 알 수 있다.


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