문제
객체지향 설계 원칙 중 **인터페이스 분리 원칙(ISP: Interface Segregation Principle)**과 **의존성 역전 원칙(DIP: Dependency Inversion Principle)**의 의미를 각각 설명하시오.
정답
ISP는 클라이언트가 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다는 원칙으로, 큰 인터페이스를 여러 개의 작은 인터페이스로 분리해야 한다. DIP는 상위 수준 모듈이 하위 수준 모듈에 의존해서는 안 되며, 둘 다 추상화에 의존해야 한다는 원칙으로, 구체적인 것이 아닌 추상적인 것에 의존해야 한다.
인터페이스 분리ISP의존성 역전DIP추상화에 의존인터페이스 분리상위 모듈하위 모듈
해설
ISP는 클라이언트가 사용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리하는 원칙이다. 예를 들어, 프린터 인터페이스에 인쇄, 스캔, 팩스 기능이 모두 있다면 인쇄만 필요한 클라이언트도 불필요한 기능에 의존하게 된다. DIP는 고수준 모듈이 저수준 모듈의 구현에 직접 의존하지 않고, 추상화(인터페이스)를 통해 의존하도록 하는 원칙이다. 이를 통해 유연하고 확장 가능한 설계를 달성할 수 있다.