--- id: P-REINFORCE-AUTO-8D5E45 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ์˜์กด์„ฑ ์—ญ์ „ ์›์น™ (DIP)" --- # [[์˜์กด์„ฑ ์—ญ์ „ ์›์น™ (DIP)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์˜์กด์„ฑ ์—ญ์ „ ์›์น™(DIP, Dependency Inversion Principle)์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ SOLID ์„ค๊ณ„ ์›์น™ ์ค‘ ํ•˜๋‚˜๋กœ, ์ƒ์œ„ ์ˆ˜์ค€์˜ ๋ชจ๋“ˆ์ด ํ•˜์œ„ ์ˆ˜์ค€์˜ ๋ชจ๋“ˆ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ ์–‘์ชฝ ๋ชจ๋‘ ์ถ”์ƒํ™”(์˜ˆ: ์ธํ„ฐํŽ˜์ด์Šค)์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ด๋‹ค [1, 2]. ์ด ์›์น™์€ ์ถ”์ƒํ™”๊ฐ€ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์˜์กดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•จ์„ ๊ฐ•์กฐํ•œ๋‹ค [2]. ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ๋ชจ๋“ˆ์„ฑ์„ ์ฆ๊ฐ€์‹œ์ผœ, ์œ ์—ฐ์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค [2, 3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **์›์น™์˜ ํ•ต์‹ฌ ๊ฐœ๋… ๋ฐ ๋ชฉ์ ** ์˜์กด์„ฑ ์—ญ์ „ ์›์น™(DIP)์€ ์ƒ์œ„ ๋ชจ๋“ˆ๊ณผ ํ•˜์œ„ ๋ชจ๋“ˆ ๊ฐ„์˜ ์ง์ ‘์ ์ธ ์˜์กด์„ฑ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ์ถ”์ƒํ™”๋ฅผ ์ œ์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค [2]. ์ƒ์œ„ ์ˆ˜์ค€์˜ ๋ชจ๋“ˆ์€ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ์ •์ฑ…์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์‰ฝ๊ฒŒ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜์œ„ ์ˆ˜์ค€์˜ ๊ตฌ์ฒด์ ์ธ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด๋‚˜ ๋„๊ตฌ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค [1, 2]. ์ด ์›์น™์„ ์ค€์ˆ˜ํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ์œ ์—ฐ์„ฑ์„ ํ™•๋ณดํ•˜์—ฌ ํ–ฅํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋งž์ถฐ ์‰ฝ๊ฒŒ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋‹ค [2]. * **๊ตฌํ˜„ ๋ฐฉ๋ฒ• ๋ฐ ์˜์กด์„ฑ ์ฃผ์ž…(DI)** DIP๋ฅผ ์‹ค๋ฌด์— ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ํ”ํžˆ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์€ '์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection, DI)'์ด๋‹ค [1]. Java์˜ Spring ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ASP.NET Core์™€ ๊ฐ™์€ ๋‚ด์žฅ DI ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‰ฝ๊ฒŒ ๋ถ„๋ฆฌ(Decoupling)ํ•˜๊ณ  ์˜์กด์„ฑ ์—ญ์ „์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค [4]. ๋˜ํ•œ ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์—ญํ• (์ธํ„ฐํŽ˜์ด์Šค)์„ ๋จผ์ € ์„ค๊ณ„ํ•˜๋Š” ์ ‘๊ทผ๋ฒ•์€ DIP์™€ ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™(OCP)์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ง€์›ํ•œ๋‹ค [4]. * **์•„ํ‚คํ…์ฒ˜ ๊ฒฝ๊ณ„์™€ ์ œ์–ด ํ๋ฆ„์˜ ์ œ์–ด** ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜์—์„œ ์ œ์–ด ํ๋ฆ„๊ณผ ์†Œ์Šค ์ฝ”๋“œ์˜ ์˜์กด์„ฑ ๋ฐฉํ–ฅ์ด ๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ, DIP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค [5]. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ „๋žต ํŒจํ„ด(Strategy Pattern)์€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌํ˜„์ฒด๋กœ๋ถ€ํ„ฐ ๊ฒฉ๋ฆฌ์‹œํ‚ค๋Š” ๋ฐ ํ•„์š”ํ•œ ์˜์กด์„ฑ ์—ญ์ „์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ ์šฉํ•˜๋Š” ๊ตฌ์กฐ๋‹ค [6]. ๋ฐ˜๋ฉด, ๋‹จ์ˆœํžˆ ์ง„์ž…์ ๋งŒ ์ œ๊ณตํ•˜๋Š” ํผ์‚ฌ๋“œ(Facade) ํŒจํ„ด์œผ๋กœ ๊ฒฝ๊ณ„๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์˜์กด์„ฑ ์—ญ์ „์˜ ์ด์ ์„ ํฌ์ƒํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค [7]. ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์ธ ์ž๋ฐ”์—์„œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ƒ์† ๊ด€๊ณ„๋ฅผ ์ ์ ˆํžˆ ๋ฐฐ์น˜ํ•จ์œผ๋กœ์จ, ์ œ์–ด ํ๋ฆ„์ด ์‹œ์Šคํ…œ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ์ง€์ ์—์„œ ์†Œ์Šค ์ฝ”๋“œ์˜ ์˜์กด์„ฑ์„ ์ œ์–ด ํ๋ฆ„์˜ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์—ญ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค [5]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[SOLID ์›์น™]], [[์˜์กด์„ฑ ์ฃผ์ž… (DI)]], [[์ถ”์ƒํ™”]], [[๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP)]] - **Projects/Contexts:** [[ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜]], [[์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„]] - **Contradictions/Notes:** ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ(SoC) ์›์น™์€ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•˜๊ณ  ๋‚˜๋ˆŒ ๊ฒƒ์ธ์ง€์— ์ดˆ์ ์„ ๋งž์ถ”๋Š” ๋ฐ˜๋ฉด, ์˜์กด์„ฑ ์—ญ์ „ ์›์น™(DIP)์€ ์ƒ์œ„ ๋ชจ๋“ˆ๊ณผ ํ•˜์œ„ ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ฒฐํ•ฉ์„ ๋ถ„๋ฆฌ(decoupling)ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์œ ์—ฐ์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋ชฉ์ ์„ ๋‘”๋‹ค๋Š” ์ ์—์„œ ๋‘ ์›์น™์˜ ์ดˆ์ ์ด ๊ตฌ๋ถ„๋œ๋‹ค [3]. --- *Last updated: 2026-04-18* ---