-
자바 - ISP (Interface Segregation Principle, 인터페이스 분리 원칙)Java 2023. 11. 22. 22:15
핵심개념: '인터페이스 분리 원칙(Interface Segregation Principle, ISP)은 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야 한다는 원칙입니다.'
인터페이스 분리 원칙(Interface Segregation Principle, ISP)은 클라이언트가 필요하지 않은 메서드에 의존하지 않아야 함을 의미합니다. 이 원칙은 클라이언트가 필요로 하는 메서드만을 가진 인터페이스를 구현하도록 권장하며, 이를 통해 불필요한 의존성을 줄이고 모듈 간의 결합도를 낮출 수 있습니다.
자세한 설명:
ISP는 '클라이언트에게 필요한 것만 제공해야 한다'는 원칙입니다. 클라이언트가 사용하지 않는 메서드에 의존하면, 그 메서드에 변화가 생겼을 때 클라이언트에도 영향을 줄 수 있습니다. 따라서 클라이언트는 자신이 필요로 하는 메서드만을 가진 인터페이스에 의존해야 합니다.
이 원칙을 따르면, 시스템의 유연성과 재사용성이 향상됩니다. 또한, 시스템의 각 부분을 독립적으로 개발하고 변경할 수 있으므로, 코드의 유지보수성이 향상됩니다.
예시:
예를 들어, '인쇄기'라는 인터페이스가 있고, 이 인터페이스에는 '흑백 인쇄', '컬러 인쇄' 두 가지 메서드가 있다고 가정해봅시다. 그런데 '흑백 인쇄기'라는 클래스는 '흑백 인쇄' 기능만 필요로 합니다. 이 경우, '흑백 인쇄기' 클래스는 '흑백 인쇄' 메서드만을 가진 인터페이스를 구현하도록 변경하여 ISP를 따르도록 해야 합니다.
샘플 코드:
// ISP를 따르지 않는 경우 interface Printer { void printBlackAndWhite(); void printColor(); // '흑백 인쇄기' 클래스가 필요로 하지 않는 메서드 } class BlackAndWhitePrinter implements Printer { @Override void printBlackAndWhite() { ... } @Override void printColor() { ... } // 필요하지 않은 메서드를 구현해야 함 } // ISP를 따르는 경우 interface BlackAndWhitePrinter { void printBlackAndWhite(); } class BlackAndWhitePrinter implements BlackAndWhitePrinter { @Override void printBlackAndWhite() { ... } // 필요한 메서드만 구현 }
이처럼 인터페이스 분리 원칙을 이해하고 적용하면, 코드의 유연성과 재사용성을 향상시킬 수 있습니다.
'Java' 카테고리의 다른 글
자바 - DIP (Dependency Inversion Principle, 의존 관계 역전 원칙) (0) 2023.11.22 자바 - LSP (Liskov Substitution Principle, 리스코프 치환 원칙) (0) 2023.11.22 자바 - SRP (Single Responsibility Principle, 단일책임원칙) (0) 2023.11.22 자바 - OCP (Open Closed Principle / 개방-폐쇄원칙) (0) 2023.11.22 BufferedReader, BufferedWriter (0) 2021.05.21