인터페이스 분리 원칙(ISP)
인터페이스 분리 원칙이란, 객체는 자신이 호출하지 않는 메소드에 의존하지 않아야한다는 원칙이다.
5가지 SOLID 원칙
객체지향 설계에서 지켜줘야 할 5개의 소프트웨어 개발 원칙
- 단일 책임 (SRP)
- 개방 폐쇄 (OCP)
- 리스코프 치환 (LSP)
- 인터페이스 분리 (ISP)
- 종속성 역전 (DIP)
이 5가지를 SOLID원칙이라고 한다.
단일 책임 원칙(Single Responsibility)
- 컴포넌트도 클래스도 함수도 하나만 책임진다.
- 클래스가 너무 많은 일을 책임진다면 일을 나눈다.
단일 책임을 무시한다면
![](https://velog.velcdn.com/images/yj_621/post/ae304bb0-8d01-4b65-9544-82d4921ef8d4/image.png)
![](https://velog.velcdn.com/images/yj_621/post/d421a44e-5c02-4a79-a87b-cbffffe241d5/image.png)
이런식으로 클래스를 분할한다.
개방 폐쇄 원칙(Open- losed)
- 확장에는 개방적이되, 수정에는 폐쇄적일 것
- 새로운 요소를 추가할 때마다 기존의 코드도 수정되는 상황을 피할 것
각각 도형이 추가될때마다 추가한 클래스에 기능을 추가(기존 클래스를 수정하는 방식X)
![](https://velog.velcdn.com/images/yj_621/post/11dd1a7c-1c04-457f-a0c9-972e13ee70ab/image.png)
리스코프 치환 원칙(Liskov Substitution)
- 자식 클래스는 부모 클래스로 완전히 대체할 수 있다.
- 자식은 부모의 기능을 제거하지 않도록, 부모는 너무 많은 로직을 가지지 않도록
- 자식 클래스가 기능을 추가할땐 가능한한 인터페이스를 사용한다.
인터페이스 분리 원칙(Interface Scgregation)
- 객체는 자신이 호출하지 않는 메서드에 의존하지 않아야한다는 원칙
- 특정 클래스가 사용하지도 않을 약속에 얽매여서는 안된다.
- 하나의 인터페이스에 너무 많은 약속이 있으면 곤란
![](https://velog.velcdn.com/images/yj_621/post/807411ea-8777-4468-84cc-7404a2485d90/image.png)
규모가 너무 큰 객체를 상속했을 때 방생하는 문제와 이를 인터페이스로 분리하여 해결하는 방법이다.
의존 역전 원칙(Dependency Inversion)
- 클래스 간 종속성을 최소화한다.
- 상위 모듈이 하위 모듈의 정보나 기능에 의존하면 안된다.
- 구제촤된 클래스에 의존하기보다는 추상 클래스나 인터페이스에 의존해야 한다는 의미.