인터페이스 분리 원칙이란 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다.

이 원칙은 큰 덩어리의 인터페이스들은 구체적이고 작은 단위들로 분리 시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.

이와 같은 작은 단위들을 역할 인터페이스라고 부른다.

인터페이스 분리 원칙을 통해 시스템의 내부 의존성을 약화시켜 리팩토링, 수정, 재배포를 쉽게 할 수 있다.

 

단일 책임 원칙(SRP)과 인터페이스 분할 원칙(ISP)의 관계를 생각해보자.

여러 책임을 갖는 클래스가 있다. 이 클래스를 역할에 맞게 책임을 인터페이스 단위로 분리하였다.

이 경우 ISP에 만족 한다고 할 수 있다. 하지만 SRP에 만족하면 ISP 또한 만족되는가?

다음과 같은 경우를 생각해보자

리모컨 기능을 구현한 메서드를 제공해주는 클래스가 있다고 가정하고, 이 클래스는 전원, 음량, 채널, 취침예약을 컨트롤 할 수 있는 기능이 구현된 메소드를 제공해준다. 

하지만 TV에 따라서 리모컨 기능 중 일부분만 사용할 수도 있다.

예를 들어서 신형TV는 취침예약, 인터넷 검색 기능 등 최신 기술들을 지원하지만 저렴한 TV는 지원 하지 않을 수 있다.

이런 경우 리모컨에 관련된 책임을 수행하기 때문에 SRP를 만족한다.

그러나 위 리모컨 인터페이스를 저렴한 TV에서 구현한다면, 사용하지 않는 메소드를 구현해야 함으로 ISP에 위배 된다.  

 

 

 

 

참조 https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_%EB%B6%84%EB%A6%AC_%EC%9B%90%EC%B9%99

 

인터페이스 분리 원칙 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

  https://defacto-standard.tistory.com/114?category=703460

 

SOLID (5) - 인터페이스 분리 원칙, ISP

인터페이스 분리 원칙 (ISP, Interface Segregation Principle) 프로그래밍 능력에 변화가 생기더라도 외국어 능력이나 발표 능력을 사용하는 영업 업무에는 영향을 미치지 않을 확률이 높지만 개발 업무 부서에는..

defacto-standard.tistory.com

 

+ Recent posts