Arthur's Blog
DI vs IoC vs DIP ๋ณธ๋ฌธ
๐ ์์ํ๊ธฐ ์ ์..
DI, IoC, DIP๊ฐ ๋น์ท๋น์ทํ๊ฑด์ค ์๊ณ , ์ด๋ค ๋ถ๋ถ์ด ๋ค๋ฅธ์ง ๋ชฐ๋๋ค๋ฉด ์ ์ฐพ์์จ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์ด ๊ธ์์๋ ๊ฐ ๊ฐ์ ์ ์, ๋ด์ฉ๋ณด๋ค๋ ์ฐจ์ด์ ์ ์ค์ ์ ์ผ๋ก ๋ค๋ฃฐ ๊ฒ์ด๋ค.
๐ต DI, IoC
์คํ๋ง์ ๊ณต๋ถํ๋ ์ฌ๋์ด๋ผ๋ฉด DI๊ณผ IoC๊ฐ ๊ฑฐ์ ๋๋ฑํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ ์๋ ์๋ค. ์๋ํ๋ฉด ์คํ๋ง 3๋ ์์๋ฅผ ์ด์ผ๊ธฐํ ๋ IoC/DI๋ผ๊ณ ๋ง์ด ์ด์ผ๊ธฐ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง DI๋ IoC๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค. ํ์ง๋ง ์ญ์ผ๋ก IoC ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ง ์๋ DI๋ํ ๊ฐ๋ฅํ๋ค. ์ด๋ฅผ Pure DI๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฐธ๊ณ ์์์ IoC๋ฅผ ์ฌ์ฉํ์ง ์๋ DI ๋ผ๋ ํํ์ ํ๋๋ฐ, ์ด ํํ์ ๋ฌด๋ฆฌ๊ฐ ์์ ์ ์๋ค๊ณ ์๊ฐ๋๋ค. ์๋ํ๋ฉด ๋ชจ๋ DI ๊ตฌํ์ฒด๋ IoC๋ก ๊ฐ์ฃผ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์์ธํ๋ด์ฉ
๐ฉ๐ป๐ค๐ฉ๐ป DI, DIP
DI๊ณผ DIP๋ ์ด๋ฆ์ด ์๋ฅ์ด ์ฒ๋ผ ๋น์ทํ๋ฐ, ๊ฝค๋ ์ฐจ์ด์ ์ด ์๋ค.
DIP๋ “์์๋ชจ๋์ด ํ์๋ชจ๋์ ์์กดํ๋ฉด ์๋๋ฉฐ(์์กด์ ๋ค์ง๊ธฐ ์ํด interface๋ฅผ ํ์ฉํด ์ถ์ํ๋ฅผ ํ๋ค.), ์ถ์ํ๋ ๊ตฌ์ฒด์ ์ธ ์ฌํญ์ ์์กดํด์๋ ์๋๋ค” ๋ก ์ ์ ๋์ด์๋ค.
ํ์ง๋ง DI๋ ๊ฐ๋จํ๋ค. ์ถ์ํ๋ฅผ ํด์น์ง ์๊ณ ์์กด์ฑ์ ์ธ์๋ก ๋๊ฒจ์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฐ๋ผ์ DI๋ DIP์ ์ฌ์ฉ์ด ํ์์ ์ด์ง ์๋ค. ๋ํ DI๋ DIP๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ผ๊ณ ๋ณผ ์ ์์ผ๋ฉฐ ์์กด์ฑ์ ์ธ๋ถ์์ ์ฃผ์ ์ ๋ฐ๋๋ผ๋ ๊ตฌ์ฒด ํด๋์ค์ ์์กดํ๊ณ ์๋ค๋ฉด DI๋ ์ฌ์ฉํ๊ณ ์์ง๋ง, DIP๋ ์ง์ผ์ง์ง ์๋๋ค๊ณ ๋ณผ ์ ์๋ค.
๐ก ๊ฒฐ๋ก
DI, IoC, DIP๋ ํท๊ฐ๋ฆฌ๋ ๊ฐ๋ ์ด ๋ง๋ค. ํ์ง๋ง ๊ทธ๋ฅ ๋๋ต์ ์ธ ๊ฒ๋ชจ์ต๋ง ๋ณด๋ ๊ฒ ๋ณด๋ค๋ ๊ฐ ๊ฐ์ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.
๋ํ ์ด๋ณด ๊ฐ๋ฐ์์ธ ๋ด๊ฐ ์ด ๊ธ์ด๋ฏ๋ก ํ๋ฆฐ ๋ด์ฉ์ด ์์ ์๋ ์๋ค. ํ๋์ Refrence๋ง ๋ณด๊ณ ํ๋จํ์ง ๋ง์! ๊ธ์ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์ธ์ ๋ Issue๋ ํ์์ ๋๋คโจ
'OOP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Coupling์ด๋ (0) | 2023.07.01 |
---|---|
DI(Dependency Injection)๋? (0) | 2023.07.01 |
์๋น์ค ๋ก์ผ์ดํฐ(SL)๋? (0) | 2023.07.01 |
๋์ ์์ง๋์ ๋ฎ์ ๊ฒฐํฉ๋ (0) | 2023.06.28 |
๊ฐ์ฒด์งํฅ 5๋ ์์น (0) | 2023.06.26 |