위의 그림에서 User1: op1, User2: op2, User3: op3 만 사용한다고 하면, User1은 op2 와 op3 을 사용하지 않아도 해당 메서드에 의존하게 된다.
이러한 문제는 아래 그림처럼 오퍼레이션을 인터페이스 단위로 분리하여 해결한다.
📕 ISP와 언어
- 언어 타입(정적, 동적 등)에 따라 소스 코드 의존성 여부가 다르다.
- 따라서, ISP를 아키텍처가 아닌, 언어와 관련된 문제라고 결론내릴 여지가 있다.
📗 ISP와 아키텍처
- 필요 이상으로 많은 걸 포함하는 모듈에 의존하는 것은 불필요한 재컴파일과 재배포를 강제한다.
📙 결론
불필요한 짐을 실은 무언가에 의존하면 예상치도 못한 문제에 빠진다.
📚 Reference
- Clean Architecture : 소프트웨어 구조와 설계의 원칙