Definition
โข
์์ ์์ค์ ๋ชจ๋์ด ํ์ ์์ค์ ๋ชจ๋์ ์์กดํ์ง ๋ง๋๋ก, ์ด๋ค ๋ ๋ชจ๋ ๋ชจ๋ ์ถ์ํ์ ์์กดํ๋๋ก
โข
์ถ์ํ๋ ๊ตฌ์ฒด์ ์ด ์ฌํญ์ ์์กดํ์ง ์๋๋ก
โข
inversion์ด๋ ์ดํ๋ ๊ตฌ์กฐ์ ๋ถ์ ์ค๊ณ ๋ฑ์ ์ ํต์ ๋ฐฉ๋ฒ์์ ์ ์ฑ
์ด ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ์์กดํ๋ ๊ฒฝํฅ์ด ์์ด, ์ด๋ค ์์กด ๊ด๊ณ๋ฅผ ์ญ์ (inversion) ์ํจ๋ค๋ ๋ป
โข
์์์์ค ๋ชจ๋์ด๋ : ์๋ฏธ๋ก ์ ํ ๋ชจ๋์ action์ ์ ์ฑ
์ ์ ๊ณตํ๋ ๋ชจ๋๋ก์, ํด๋น ํ๋ก๊ทธ๋จ์ ํต์ฌ์ ์ด๋ฃจ๋ ๋ชจ๋. ์ผ๋ฐ์ ์ผ๋ก ํ์ ์์ค ๋ชจ๋์ ๋นํด ๋ณํ ์ ๋๊ฐ ์ ์.
DIP violated sample
โข
Utility -> Mechanism -> Policy ๋ฐฉํฅ์ผ๋ก ์์ค์ด ๋์์ง์๋ ๋ถ๊ตฌํ๊ณ , ํ์ ์์ค์ ๋ชจ๋ ๋ฐฉํฅ์ผ๋ก dependency๊ฐ ๊ฑธ๋ฆฌ๊ณ ์์.
โข
๊ฒ๋ค๊ฐ ์์กด์ฑ์ ์ดํ์ฑ(transitivity)๋ฅผ ๋๋ฏ๋ก, policy ๊ณ์ธต์ mechanism ๋ฟ ์๋๋ผ utility ๊ณ์ธต์๋ ์์กด์ฑ์ ๊ฐ์ง.
DIP complied sample
โข
์์ ์์ค ๋ชจ๋์ ์์ ์ด ํ์ํ ํ์ ์์ค ์๋น์ค์ ๋ํ ์ ์(์ถ์๋ฌผ)์ ๊ทธ ์์ ์ ๊ณ์ธต์ ์ ์ํ๊ณ , ํด๋น ์ ์๋ฅผ ์ฐธ์กฐ(์์กด์ฑ์ ์ ๊ฑฐ)
โข
ํ์ ์์ค ๋ชจ๋์ ์์ ์์ค ๊ณ์ธต์ ์ ์๋ ์๋น์ค๋ฅผ ์์์ ํตํด ๊ตฌํ๋ฌผ์ ์ ๊ณต(์์ ์์ค์ ์ถ์๋ฌผ์ ๋ํ ์์์ ํตํ ์์กด์ฑ์ ์ญ์ )
Conclusion
โข
Framework design์์ ๋ณธ ์์น์ ์ ์ ํ ์์ฉ์ด ํ์ : DI(Dependency Injection; ์์กด์ฑ์ด ํด๋น ํด๋์ค๊ฐ ์ธ์คํด์คํ๋ ์ดํ์์ผ ๊ฑธ๋ฆผ)
โข
TDD๋ฅผ ์ด๋ฃจ๊ธฐ์ ๋งค์ฐ ์ฉ์ด. Ex. Policy layer๋ ํ layer์ ๋์ ์์ด๋ ์ธ์คํด์คํ๊ฐ ๊ฐ๋ฅ.




