--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[Interface-Segregation-Principle|Interface-Segregation-Principle]] (인터페이스 분리 원칙) last_updated: 2026-05-02 --- # [[Interface-Segregation-Principle|Interface-Segregation-Principle]] (인터페이스 분리 원칙) ## 📌 Brief Summary > "쓰지도 않는 기능이 담긴 거대한 리모컨은 필요 없다." 자신이 사용하지 않는 메서드에 의존하도록 강제해서는 안 되며, 인터페이스는 구체적이고 작게 쪼개져야 한다는 원칙이다. --- > 인터페이스 분리 원칙(ISP)은 객체 지향 프로그래밍(OOP)을 위한 5가지 기본 설계 원칙인 SOLID 중 하나로, 로버트 C. 마틴(Ro[[BERT|BERT]] C. Martin)에 의해 정립되었습니다 [1-3]. 이 원칙은 클라이언트가 자신이 사용하지 않는 인터페이스에 의존하도록 강요받아서는 안 된다는 것을 핵심으로 합니다 [2, 4]. 이를 달성하기 위해 하나의 크고 범용적인 인터페이스 대신, 작고 구체적이며 특화된 인터페이스를 여러 개 설계하는 것을 권장합니다 [2, 4]. ## 📖 Core Content - **The Core Problem**: 하나의 거대한 인터페이스(Fat Interface)를 여러 클래스가 상속하면, 어떤 클래스는 필요 없는 기능까지 구현(보통 빈 메서드로 방치)해야 하는 문제가 생김. - **The [[Solution|Solution]]**: 클라이언트 전용 인터페이스로 쪼갠다. (예: `SmartDevice` 대신 `Printer`, `Scanner`, `Fax` 인터페이스로 분리) - **Result**: 특정 기능의 요구사항이 바뀌어도, 그 기능을 쓰지 않는 다른 클래스들은 전혀 영향(재컴파일 등)을 받지 않는다. --- * **핵심 개념 및 구현 방식:** 인터페이스 분리 원칙은 클라이언트가 자신의 목적을 달성하는 데 꼭 필요한 메서드만 사용해야 함을 의미합니다 [4]. 이를 구현하기 위해 개발자는 다목적의 큰 인터페이스를 구축하는 것을 지양하고, 대신 역할이 제한된 작고 구체적인 전문 인터페이스를 여러 개 생성해야 합니다 [2, 4]. * **시스템 설계에서의 기대 효과:** 클라이언트가 불필요한 인터페이스에 의존하지 않게 함으로써, 코드 변경 시 발생할 수 있는 파급 효과(effects of changes)를 최소화하고 시스템의 유연성을 크게 높일 수 있습니다 [4]. 궁극적으로 이 원칙은 더 모듈화되고 느슨하게 결합된(loosely coupled) 시스템을 설계하는 데 직접적으로 기여합니다 [3]. * **관심사의 분리(SoC)와의 관계:** 소프트웨어 개발의 가장 기본적이고 핵심적인 원칙 중 하나인 '관심사의 분리([[_뇌와 팔다리의 분리_ - 관심사의 분리 (Separation of Concerns)|Separation of Concerns]], SoC)' 개념에서 직접적으로 파생된 두 가지 SOLID 원칙 중 하나가 바로 인터페이스 분리 원칙(나머지 하나는 단일 책임 원칙)입니다 [5-7]. 이는 복잡한 시스템을 관리 가능하게 분해하고 모듈성을 향상시키는 데 있어 해당 원칙이 얼마나 중요한지를 보여줍니다 [6, 7]. ## ⚖️ Trade-offs & Caveats - 인터페이스를 너무 잘게 쪼개면 인터페이스 수가 폭발하여 관리가 힘들어지는 트레이드오프가 있다. 따라서 '응집도'와 '클라이언트의 필요' 사이에서 균형을 잡아야 한다. 타입스크립트와 같은 현대 언어에서는 인터페이스 상속과 교차 타입(`&`)을 활용해 필요한 기능만 유연하게 조합하는 방식으로 ISP를 스마트하게 적용한다. --- - **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요. - **정책 변화:** Design & Experience 분야의 자동 자산화 수행. ## 🔗 Knowledge Connections - Related: SOLID-[[Principles|Principles]] , Single-Responsibility-Principle (SRP) - Technique: Role-Interface --- - **Related Topics:** SOLID [[Principles|Principles]], Separation of Concerns (SoC), Object-Oriented Programming (OOP) - **Projects/Contexts:** Clean [[Architecture|Architecture]], SoftwareSystem Design - **Contradictions/Notes:** 주어진 소스 내에서 인터페이스 분리 원칙에 대한 모순된 주장은 발견되지 않으며, 모든 소스가 이 원칙이 관심사의 분리(SoC) 개념에 뿌리를 두고 있으며 모듈성과 시스템 유연성을 향상시킨다는 점에 동의하고 있습니다. --- *Last updated: 2026-04-18* ---