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

1.7 KiB

id, category, confidence_score, tags, last_reinforced
id category confidence_score tags last_reinforced
P-REINFORCE-AI-ISP 10_Wiki/💡 Topics/AI 0.99
SoftwareEngineering
SOLID
ISP
CleanCode
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)