정의
인터페이스가 다양한 역할(≠기능)을 처리하게 만드는 청사진이 되지 않도록, 역할 단위로 잘게 나누어야 한다는 뜻이다.
인터페이스가 지나치게 클 때 발생하는 문제
여러 객체가 하나의 인터페이스를 채택해 기능을 구현한다고 하자.
그런데 모든 객체가 그 인터페이스의 모든 기능을 사용하는 것은 아니다.
이런 상황에서 인터페이스가 일부 수정되면, 그 수정된 부분이 논리적으로 어떤 객체에는 전혀 필요 없는 것일 수 있다.
하지만, 해당 객체는 인터페이스를 구현하고 있기 때문에 코드상으로는 그 변경을 반영해야 한다.
결과적으로, 불필요한 의존성과 변경 전파가 발생하게 된다.
이는 유지보수를 어렵게 만든다.
아키텍처 수준에서의 인터페이스 분리 법칙
이 원칙은 단순히 객체의 메서드 인터페이스에만 국한된 이야기가 아니다.
모듈 간의 의존 관계에서도 동일하게 적용된다.
예시:
A → B → C
- A 모듈은 B를 의존하고
- B 모듈은 C를 의존한다고 가정하자.
이때 C 모듈이 변경 및 배포되면, 그에 따라 B도 변경될 수 있고, 결국 A도 영향을 받는다.
더 큰 문제는, C 내부의 기능 중 A와 B가 전혀 사용하지 않는 기능에 문제가 생겨도, A와 B는 영향을 받을 수 있다는 점이다.
추이 종속성 차단
이를 막기 위해선:
A → I ← B → C // 인터페이스 I로 의존성 단절
이처럼 인터페이스는 변경 전파를 차단하는 방패 역할로 사용할 수 있다.
※ 본 글은 『Clean Architecture』(로버트 C. 마틴 저) 3부의 10장을 기반으로 학습 목적으로 요약한 글입니다.
※ 이 글은 책의 내용을 요약한 것으로, 원문 없이 읽을 경우 오해의 여지가 있을 수 있습니다. 정확한 이해를 위해 원서의 정독을 권장합니다.
'아키텍처' 카테고리의 다른 글
Clean Architecture 정리 - 4부 컴포넌트 원칙(1) (0) | 2025.06.21 |
---|---|
Clean Architecture 정리 - 3부 11장 의존성 역전 원칙 (1) | 2025.06.15 |
Clean Architecture 정리 - 3부 9장 리스코프 치환 원칙 (0) | 2025.06.13 |
Clean Architecture 정리 - 3부 8장 개방-폐쇄 원칙 (3) | 2025.06.12 |
Clean Architecture 정리 - 3부 7장 단일 책임 원칙 (0) | 2025.06.10 |