인터페이스 분리 원칙이란 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다.
이 원칙은 큰 덩어리의 인터페이스들은 구체적이고 작은 단위들로 분리 시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.
이와 같은 작은 단위들을 역할 인터페이스라고 부른다.
인터페이스 분리 원칙을 통해 시스템의 내부 의존성을 약화시켜 리팩토링, 수정, 재배포를 쉽게 할 수 있다.
단일 책임 원칙(SRP)과 인터페이스 분할 원칙(ISP)의 관계를 생각해보자.
여러 책임을 갖는 클래스가 있다. 이 클래스를 역할에 맞게 책임을 인터페이스 단위로 분리하였다.
이 경우 ISP에 만족 한다고 할 수 있다. 하지만 SRP에 만족하면 ISP 또한 만족되는가?
다음과 같은 경우를 생각해보자
리모컨 기능을 구현한 메서드를 제공해주는 클래스가 있다고 가정하고, 이 클래스는 전원, 음량, 채널, 취침예약을 컨트롤 할 수 있는 기능이 구현된 메소드를 제공해준다.
하지만 TV에 따라서 리모컨 기능 중 일부분만 사용할 수도 있다.
예를 들어서 신형TV는 취침예약, 인터넷 검색 기능 등 최신 기술들을 지원하지만 저렴한 TV는 지원 하지 않을 수 있다.
이런 경우 리모컨에 관련된 책임을 수행하기 때문에 SRP를 만족한다.
그러나 위 리모컨 인터페이스를 저렴한 TV에서 구현한다면, 사용하지 않는 메소드를 구현해야 함으로 ISP에 위배 된다.
https://defacto-standard.tistory.com/114?category=703460
'IT > SOLID 원칙' 카테고리의 다른 글
의존 역전 원칙 - DIP (Dependency Inversion Principle) (0) | 2019.12.11 |
---|---|
단일 책임의 원칙 - SRP(Single Responsibility Principle) (0) | 2019.12.10 |
개방 폐쇄 원칙 - OCP(Open Close Principal) (0) | 2019.12.10 |