Files
2nd/10_Wiki/Topics/Architecture/Interface-Segregation-Principle.md
T

4.6 KiB


category: Unified tags: [auto-consolidated, technical-documentation] title: Interface-Segregation-Principle (인터페이스 분리 원칙) last_updated: 2026-05-02

Interface-Segregation-Principle (인터페이스 분리 원칙)

📌 Brief Summary

"쓰지도 않는 기능이 담긴 거대한 리모컨은 필요 없다." 자신이 사용하지 않는 메서드에 의존하도록 강제해서는 안 되며, 인터페이스는 구체적이고 작게 쪼개져야 한다는 원칙이다.


인터페이스 분리 원칙(ISP)은 객체 지향 프로그래밍(OOP)을 위한 5가지 기본 설계 원칙인 SOLID 중 하나로, 로버트 C. 마틴(RoBERT C. Martin)에 의해 정립되었습니다 [1-3]. 이 원칙은 클라이언트가 자신이 사용하지 않는 인터페이스에 의존하도록 강요받아서는 안 된다는 것을 핵심으로 합니다 [2, 4]. 이를 달성하기 위해 하나의 크고 범용적인 인터페이스 대신, 작고 구체적이며 특화된 인터페이스를 여러 개 설계하는 것을 권장합니다 [2, 4].

📖 Core Content

  • The Core Problem: 하나의 거대한 인터페이스(Fat Interface)를 여러 클래스가 상속하면, 어떤 클래스는 필요 없는 기능까지 구현(보통 빈 메서드로 방치)해야 하는 문제가 생김.
  • The 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 , Single-Responsibility-Principle (SRP)
  • Technique: Role-Interface

  • Related Topics: SOLID Principles, Separation of Concerns (SoC), Object-Oriented Programming (OOP)
  • Projects/Contexts: Clean Architecture, SoftwareSystem Design
  • Contradictions/Notes: 주어진 소스 내에서 인터페이스 분리 원칙에 대한 모순된 주장은 발견되지 않으며, 모든 소스가 이 원칙이 관심사의 분리(SoC) 개념에 뿌리를 두고 있으며 모듈성과 시스템 유연성을 향상시킨다는 점에 동의하고 있습니다.

Last updated: 2026-04-18