1. ISP란?
- 하나의 커다란 인터페이스보다는 작고 구체적인 인터페이스 여러 개로 나누는 것이 좋다는 원칙이다.
- 왜 중요할까?
- 인터페이스가 너무 크면, 사용하지 않는 기능까지 구현해야 해서 불필요한 의존성과 결합이 생긴다.
- 사용자는 자신이 필요한 기능만 정의된 인터페이스에 의존해야 유지보수가 쉬워진다.
1 - 1. 인터페이스의 분리 기준
- 핵심 개념
- 하나의 거대한 인터페이스를 쪼개서, 필요한 기능만 포함된 인터페이스를 각각 제공하자.
- 작고 응집도 높은 인터페이스를 여러 개 만드는 것이 더 좋은 설계이다.
interface Printer {
void print();
}
interface Scanner {
void scan();
}
interface Fax() {
void fax();
}
// 프린터는 print만 할 줄 알면 됨
class SimplePrinter implements Printer {
public void print() { ... }
}
// 스캐너는 scan만 할 줄 알면 됨
class SimpleScanner implements Scanner {
public void scan() { ... }
}
// 가정용 복합기는 print와 scan만 할 줄 알면 된다.
class HomeMultiFunctionalPrinter implements Printer, Scanner {
public void print() { ... }
public void scan() { ... }
}
- 필요한 기능만 작은 인터페이스로 분리
- 클라이언트(구현 클래스)는 자신이 사용하는 기능만 구현하면 된다.
1 - 2. 응집도 높은 인터페이스 설계
- 인터페이스에 포함된 메소드들이 하나의 목적을 공유하고 있을 때, 그 인터페이스는 응집도가 높다고 표현한다.
interface Repository {
void save(); // 저장소는 save 할 수 있음
void delete(); // 저장소는 delete 할 수 있음
}
interface MailSender {
void sendEmail(); // 이제 역할이 분리됨(응집도 증가)
}
- 각각의 인터페이스가 단일 목적에 집중한다. → 필요에 따라 조합하여 사용이 가능하다.
'자바 고급(JAVA)' 카테고리의 다른 글
| 내부 클래스(Inner Class) (0) | 2026.05.15 |
|---|---|
| SOLID 원칙 - DIP(Dependency Inversion Principle) (0) | 2026.05.15 |
| SOLID원칙 - LSP(리스코프 치환 원칙) (0) | 2026.05.15 |
| SOLID 원칙 - OCP(Open/Closed Principle) (0) | 2026.05.14 |
| SOLID 원칙 - SRP(단일 책임의 원칙) (0) | 2026.05.14 |