ISP에 대한 개념은 다음과 같다.
클라이언트가 자신이 이용하지 않는 메서드에 의존하면 안된다
즉, 하나의 책임만을 가지는 작은 규모의 인터페이스로 분리해야한다.
이 경우 User1은 op2, op3를 사용하지 않음에도 User1의 소스 코드는 이 두 메서드에 의존하게 된다. 때문에 op2가 변경이 된다면 User1도 컴파일한 후 재배포해야한다.
이는 다음과 같이 해결할 수 있다.
User1은 U1Ops와 op1에 의존하지만 OPS에는 의존하지 않는다. 따라서 OPS에 대한 변경사항이 User1과는 관계없게 되고 User1을 다시 컴파일하고 배포하는 상황은 발생하지 않는다.
불필요한 짐을 실은 무언가에 의존하면 예상치 못한 문제에 빠질 수 있다.
참조