---
id: P-REINFORCE-AI-ISP
category: "[[10_Wiki/💡 Topics/AI]]"
confidence_score: 0.99
tags: [SoftwareEngineering, SOLID, ISP, CleanCode]
last_reinforced: 2026-04-20
---

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

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

## 📖 구조화된 지식 (Synthesized Content)
- **The Core Problem**: 하나의 거대한 인터페이스(Fat Interface)를 여러 클래스가 상속하면, 어떤 클래스는 필요 없는 기능까지 구현(보통 빈 메서드로 방치)해야 하는 문제가 생김.
- **The Solution**: 클라이언트 전용 인터페이스로 쪼갠다. (예: `SmartDevice` 대신 `Printer`, `Scanner`, `Fax` 인터페이스로 분리)
- **Result**: 특정 기능의 요구사항이 바뀌어도, 그 기능을 쓰지 않는 다른 클래스들은 전혀 영향(재컴파일 등)을 받지 않는다.

## ⚠️ 모순 및 업데이트 (RL Update)
- 인터페이스를 너무 잘게 쪼개면 인터페이스 수가 폭발하여 관리가 힘들어지는 트레이드오프가 있다. 따라서 '응집도'와 '클라이언트의 필요' 사이에서 균형을 잡아야 한다. 타입스크립트와 같은 현대 언어에서는 인터페이스 상속과 교차 타입(`&`)을 활용해 필요한 기능만 유연하게 조합하는 방식으로 ISP를 스마트하게 적용한다.

## 🔗 지식 연결 (Graph)
- Related: [[SOLID-Principles]] , [[Single-Responsibility-Principle (SRP)]]
- Technique: [[Role-Interface]]
