문제
객체지향 설계 원칙 중 **인터페이스 분리 원칙(ISP: Interface Segregation Principle)**과 **의존성 역전 원칙(DIP: Dependency Inversion Principle)**의 의미를 각각 설명하시오.
정답
ISP는 클라이언트가 자신이 사용하지 않는 메서드에 의존하지 않도록 인터페이스를 작고 구체적으로 분리해야 한다는 원칙이다. DIP는 고수준 모듈이 저수준 모듈에 직접 의존하지 않고 둘 다 추상화에 의존해야 한다는 원칙으로, 구체적 구현이 아닌 인터페이스나 추상 클래스에 의존해야 한다.
인터페이스 분리ISP의존성 역전DIP추상화에 의존고수준 모듈저수준 모듈사용하지 않는 메서드
해설
ISP는 Fat Interface를 피하고 클라이언트별로 필요한 메서드만 포함하는 인터페이스를 제공하여 불필요한 의존성을 제거한다. DIP는 구체적 구현에 의존하는 대신 추상화를 통해 변경에 유연한 설계를 만든다. 두 원칙 모두 결합도를 낮추고 유지보수성을 향상시킨다.