Files
2nd/10_Wiki/Topics_GD/Dependency-Inversion-Principle.md
T

1.8 KiB


id: P-Reinforce-AI-DIP category: "10_Wiki/💡 Topics/AI" confidence_score: 0.98 tags: [SoftwareEngineering, SOLID, DIP, Architecture] last_reinforced: 2026-04-20

Dependency-[[Inversion-Principle]] (의존 관계 역전 원칙)

📌 한 줄 통찰 (The Karpathy Summary)

"구체적인 벽돌이 아니라 설계도에 의존하라." 상위 모듈이 하위 모듈에 직접 의존하는 것이 아니라, 둘 다 추상화(인터페이스)에 의존하게 만듦으로써 시스템의 변화를 유연하게 수용하는 SOLID의 핵심 원칙이다.

📖 구조화된 지식 (Synthesized Content)

  • The Rule:
      1. 상위 모듈은 하위 모듈 구현에 의존해서는 안 된다.
      1. 추상화는 세부 사항에 의존해서는 안 되며, 세부 사항이 추상화에 의존해야 한다.
  • Why Inverse?:
    • 기존의 전통적인 설계는 상위 수준의 로직이 하위 수준의 도구에 끌려다니는 구조였으나, 이 원칙을 적용하면 도구가 로직(인터페이스)에 맞춰 끼워지는 형태로 흐름이 역전된다.
  • Impact: 특정 라이브러리나 프레임워크를 교체할 때 상위 비즈니스 로직을 전혀 건드리지 않아도 되는 강력한 격리 능력을 제공한다.

⚠️ 모순 및 업데이트 (RL Update)

  • DIP를 지키려면 인터페이스 설계가 선행되어야 하는데, 도메인에 대한 이해가 부족할 때 성급하게 인터페이스를 만들면 생산성만 떨어뜨리는 '과잉 설계(Over-engineering)'가 될 수 있다. 변화가 거의 없는 확실한 부분은 구체 클래스에 의존하는 것이 나을 때도 있다.

🔗 지식 연결 (Graph)