--- id: P-REINFORCE-AUTO-577066 category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - μ˜μ‘΄μ„± μ—­μ „ 원칙 (Dependency Inversion Principle)" --- # [[μ˜μ‘΄μ„± μ—­μ „ 원칙 (Dependency Inversion Principle)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > μ˜μ‘΄μ„± μ—­μ „ 원칙(Dependency Inversion Principle, DIP)은 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ SOLID 섀계 원칙 쀑 ν•˜λ‚˜λ‘œ, μƒμœ„ μˆ˜μ€€μ˜ λͺ¨λ“ˆμ΄ ν•˜μœ„ μˆ˜μ€€μ˜ λͺ¨λ“ˆμ— μ˜μ‘΄ν•΄μ„œλŠ” μ•ˆ 되며 λ‘˜ λ‹€ 좔상화에 μ˜μ‘΄ν•΄μ•Ό ν•œλ‹€λŠ” μ†Œν”„νŠΈμ›¨μ–΄ 섀계 원칙이닀 [1-3]. λ˜ν•œ μΆ”μƒν™”λŠ” μ„ΈλΆ€ κ΅¬ν˜„μ— μ˜μ‘΄ν•΄μ„œλŠ” μ•ˆ 되며, λ°˜λŒ€λ‘œ μ„ΈλΆ€ κ΅¬ν˜„μ΄ 좔상화에 μ˜μ‘΄ν•΄μ•Ό 함을 λͺ…μ‹œν•œλ‹€ [3]. 이 원칙은 ꡬ체적인 κ΅¬ν˜„ λŒ€μ‹  μΈν„°νŽ˜μ΄μŠ€μ™€ 같은 좔상화에 μ˜μ‘΄ν•¨μœΌλ‘œμ¨ μ‹œμŠ€ν…œ μ»΄ν¬λ„ŒνŠΈ κ°„μ˜ λŠμŠ¨ν•œ 결합을 μœ λ„ν•˜κ³  μœ μ—°μ„± 및 ν…ŒμŠ€νŠΈ κ°€λŠ₯성을 ν–₯μƒμ‹œν‚¨λ‹€ [4, 5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **핡심 원리와 λͺ©μ :** * κ³ μˆ˜μ€€ λͺ¨λ“ˆκ³Ό μ €μˆ˜μ€€ λͺ¨λ“ˆ κ°„μ˜ 직접적인 쒅속성을 μ œν•œν•˜κΈ° μœ„ν•΄ μΈν„°νŽ˜μ΄μŠ€μ™€ 같은 좔상화 계측을 λ„μž…ν•œλ‹€ [3]. * μƒμœ„ λͺ¨λ“ˆκ³Ό ν•˜μœ„ λͺ¨λ“ˆμ„ 뢄리(decoupling)ν•˜λŠ” 데 μ΄ˆμ μ„ λ§žμΆ”μ–΄ μ‹œμŠ€ν…œμ„ μœ μ—°ν•˜κ³  ν…ŒμŠ€νŠΈν•˜κΈ° μ‰½κ²Œ λ§Œλ“ λ‹€ [4, 5]. * **μ‹œμŠ€ν…œμ— λ―ΈμΉ˜λŠ” μž₯점:** * 좔상화에 μ˜μ‘΄ν•¨μœΌλ‘œμ¨ μ»΄ν¬λ„ŒνŠΈ κ°„μ˜ λŠμŠ¨ν•œ κ²°ν•©(loose coupling)을 μ΄‰μ§„ν•œλ‹€ [5]. * μ‹œμŠ€ν…œμ˜ λͺ¨λ“ˆμ„±μ„ 크게 μ¦κ°€μ‹œμΌœ μš”κ΅¬μ‚¬ν•­ 변화에 맞좰 μ‰½κ²Œ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜κ³  ν™•μž₯ν•  수 μžˆλŠ” μœ μ—°μ„±μ„ μ œκ³΅ν•œλ‹€ [3, 5]. * **κ΅¬ν˜„ 및 μ‹€μ²œ λ°©μ•ˆ:** * 이 원칙은 주둜 μ˜μ‘΄μ„± μ£Όμž…(Dependency Injection, DI) 기법을 톡해 κ΅¬ν˜„λœλ‹€ [2]. * Java의 Springμ΄λ‚˜ ASP.NET Core에 λ‚΄μž₯된 DI μ»¨ν…Œμ΄λ„ˆμ™€ 같은 ν”„λ ˆμž„μ›Œν¬λ₯Ό ν™œμš©ν•˜λ©΄ μ»΄ν¬λ„ŒνŠΈ κ°„μ˜ 결합을 λΆ„λ¦¬ν•˜μ—¬ DIPλ₯Ό 훨씬 μ‰½κ²Œ μ μš©ν•  수 μžˆλ‹€ [6]. * μ»΄ν¬λ„ŒνŠΈκ°€ μ–΄λ–»κ²Œ λ™μž‘ν• μ§€(κ΅¬ν˜„)λ₯Ό μ½”λ”©ν•˜κΈ° 전에 무엇을 ν•΄μ•Ό ν•˜λŠ”μ§€(μΈν„°νŽ˜μ΄μŠ€)λ₯Ό λ¨Όμ € μ •μ˜ν•˜λŠ” 섀계 관행이 DIP(및 OCP)λ₯Ό μžμ—°μŠ€λŸ½κ²Œ μ§€μ›ν•œλ‹€ [6]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[SOLID 원칙]], [[μ˜μ‘΄μ„± μ£Όμž… (Dependency Injection)]], [[κ΄€μ‹¬μ‚¬μ˜ 뢄리 (Separation of Concerns)]] - **Projects/Contexts:** [[객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° (Object-Oriented Programming)]], [[클린 μ•„ν‚€ν…μ²˜ (Clean Architecture)]] - **Contradictions/Notes:** μ†ŒμŠ€ λ‚΄μ—μ„œ μ˜μ‘΄μ„± μ—­μ „ 원칙 μžμ²΄μ— λŒ€ν•œ 직접적인 λ°˜λŒ€ μ˜κ²¬μ΄λ‚˜ λͺ¨μˆœμ€ λ°œκ²¬λ˜μ§€ μ•ŠλŠ”λ‹€. λ‹€λ§Œ, μ†Œν”„νŠΈμ›¨μ–΄ 섀계 원칙 쀑 [[κ΄€μ‹¬μ‚¬μ˜ 뢄리 (Separation of Concerns)]]와 비ꡐ할 λ•Œ, SoCλŠ” κΈ°λŠ₯에 따라 μ½”λ“œλ₯Ό κ΅¬μ„±ν•˜λŠ” 것에 μ΄ˆμ μ„ λ§žμΆ”λŠ” 반면, DIPλŠ” μœ μ—°μ„±κ³Ό ν…ŒμŠ€νŠΈ κ°€λŠ₯성을 높이기 μœ„ν•΄ μƒμœ„-ν•˜μœ„ λͺ¨λ“ˆ κ°„μ˜ 결합을 λΆ„λ¦¬ν•˜λŠ” 데 μ§‘μ€‘ν•œλ‹€λŠ” λͺ©μ μ˜ 차이가 λͺ…μ‹œλ˜μ–΄ μžˆλ‹€ [4, 5]. --- *Last updated: 2026-04-18* ---