Interface Segregation Principle (인터페이스 분리 원칙)
인터페이스 분리 원칙(ISP)은 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다는 원칙이다. 사용하지 않는 메서드에 의존하도록 강제해서는 안 된다.
준수 시 이점
- 가벼운 구현: 클래스가 자신에게 꼭 필요한 메서드만 구현하면 되므로 코드가 간결해진다.
- 재컴파일 방지: 관련 없는 메서드의 변경으로 인해 해당 인터페이스를 사용하는 다른 클래스들을 다시 컴파일할 필요가 없어진다.
예시 코드
// bad: 모든 기능을 한 인터페이스에 넣음
interface SmartPrinter {
void print();
void fax();
void scan();
}
// good: 기능을 세분화
interface Printer { void print(); }
interface Fax { void fax(); }
interface Scanner { void scan(); }
class BasicPrinter implements Printer {
public void print() { /* 인쇄만 수행 */ }
}