인터페이스 분리 원칙 (ISP, Interface Segregation Principle)
- 인터페이스는 클라이언트에 특화되도록 분리시키는 설계 원칙
왜 인터페이스 분리 원칙이 필요한가?
- 위의 그림의 클래스 설계에서 Client1은 Ops 클래스의 ops1 메서드를, Client2는 ops2, Client3은 ops3 메서드를 사용한다고 가정하자
- Ops 클래스가 정적 타입의 언어로 작성되었을 때, Client1이 ops2(), ops2() 메서드를 사용하지 않아도 Clinet1은 두 메서드를 의존하게 된다.
- 이러한 의존성은 ops2()가 변경되어도 Client1을 다시 컴파일 후 배포해야함을 의미한다.
- 이렇게 사용하지 않는 메서드를 의존하는 문제를 인터페이스를 분리함으로써 해결할 수 있다.
ISP와 언어
- ISP는 아키텍처가 아닌 언어와 관련된 문제로 볼 수 있다.
- 정적 타입 언어는 타입 선언문을 사용하도록 강제하며, 이로인해 소스 코드 의존성이 발생해 재컴파일 또는 재배포가 강제되는 상황이 초래된다.
- 동적 타입 언어는 선언문이 존재하지 않고 런타입에 추론이 발생하기 때문에, 소스 코드 의존성이 없으며 재컴파일과 재배포가 필요없다.
ISP와 아키텍처
- ISP가 언어와 관련된 문제로 볼 수 있지만, 아키텍처에서도 인터페이스 분리 원칙은 중요하다.
- 필요 이상으로 많은 걸 포함하는 모듈에 의존하는 것은 소스코드 뿐만아니라 고수준 아키텍처에서도 마찬가지이다.
- 불필요하게 많은 역할을 하는 무언가에 의존하면 예상치도 못한 문제에 빠질 수 있다.
서적 : http://www.yes24.com/Product/Goods/77283734
'Architecture' 카테고리의 다른 글
[Clean Architecture 정리] 12장. 컴포넌트 (0) | 2022.07.24 |
---|---|
[Clean Architecture 정리] 11장. DIP (0) | 2022.07.23 |
[Clean Architecture 정리] 9장. LSP (0) | 2022.07.20 |
[Clean Architecture 정리] 8장. OCP (0) | 2022.07.19 |
[Clean Architecture 정리] 7장. SRP (0) | 2022.07.17 |
댓글