9.1 ์ข ์์ฑ ์ญ์
new Thread().start()
์๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์์๋ ?๋ฅผ ํตํด ์คํธ๋ฆผ์ ๋ง๋ค ์ ์๋ค๊ณ ๋งํ ์ ์ด ์์ต๋๋ค. ์ปจํ
์ด๋๋ง ์ค๋ ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด์ ์ด ์์ด๋์ด๋ฅผ ๋์ฑ ๋ฐ์ ์ํฌ ๊ฒ์
๋๋ค.
๋ํ ๋ชจ๋ ๊ฐ์ฒด๋ ์ปจํ ์ด๋์ ์ํด์๋ง ์์ฑ๋์ด์ผ ํฉ๋๋ค . ๋ฌผ๋ก ๋ชจ๋ ๊ฐ์ฒด์ ๋ํด ๋งํ๋ ๊ฒ์ด ์๋๋ผ ์์ ๋น์ฆ๋์ค ๊ฐ์ฒด์ ๋ํด ๋งํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ๋ค์ ์ข ์ข ๋น(bin)์ด๋ผ๊ณ ๋ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ค๋ฆฌ๋ ํด๋์ค๋ฅผ ์ ๊ฑฐํ๊ณ ์ธํฐํ์ด์ค๋ก ์ด๋ํด์ผ ํ๋ SOLID์ ๋ค์ฏ ๋ฒ์งธ ์์น์์ ์์๋ฉ๋๋ค.
- ์ต์์ ๋ชจ๋์ ํ์ ์์ค ๋ชจ๋์ ์์กดํด์๋ ์ ๋ฉ๋๋ค. ๋ ๋ค ์ถ์ํ์ ์์กดํด์ผ ํฉ๋๋ค.
- ์ถ์ํ๋ ์ธ๋ถ ์ฌํญ์ ์์กดํด์๋ ์ ๋ฉ๋๋ค. ๊ตฌํ์ ์ถ์ํ์ ์์กดํด์ผ ํฉ๋๋ค.
๋ชจ๋์ ํน์ ๊ตฌํ์ ๋ํ ์ฐธ์กฐ๋ฅผ ํฌํจํด์๋ ์ ๋๋ฉฐ ๋ชจ๋ ๊ฐ์ ๋ชจ๋ ์ข ์์ฑ ๋ฐ ์ํธ ์์ฉ์ ์ถ์ํ(์ฆ, ์ธํฐํ์ด์ค)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก๋ง ๊ตฌ์ถ๋์ด์ผ ํฉ๋๋ค. ์ด ๊ท์น์ ํต์ฌ์ ํ ๋ฌธ๊ตฌ๋ก ์์ฑํ ์ ์์ต๋๋ค. ๋ชจ๋ ์ข ์์ฑ์ ์ธํฐํ์ด์ค ํ์์ด์ด์ผ ํฉ๋๋ค .
๊ธฐ๋ณธ์ ์ธ ํน์ฑ๊ณผ ๋ช ๋ฐฑํ ๋จ์์ฑ์๋ ๋ถ๊ตฌํ๊ณ ์ด ๊ท์น์ ๊ฐ์ฅ ์์ฃผ ์๋ฐ๋ฉ๋๋ค. ์ฆ, ํ๋ก๊ทธ๋จ/๋ชจ๋์ ์ฝ๋์์ new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๊ณ ํน์ ์ ํ์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋๋ง๋ค ์ธํฐํ์ด์ค์ ์์กดํ๋ ๋์ ๊ตฌํ์ ๋ํ ์์กด์ฑ์ด ํ์ฑ๋ฉ๋๋ค.
์ด๊ฒ์ ํผํ ์ ์์ผ๋ฉฐ ์ด๋๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ต์ํ ์ด๋ฌํ ์์ ์ด ์ํ๋๊ณ ํด๋์ค๊ฐ ๋ช ์์ ์ผ๋ก ์ง์ ๋ ์์น์ ์๋ฅผ ์ต์ํํ๊ณ ์ด๋ฌํ ์์น๋ฅผ ์ง์ญํํ๊ณ ๊ฒฉ๋ฆฌํ์ฌ ํ๋ก๊ทธ๋จ ์ฝ๋ ์ ์ฒด์ ๋ถ์ฐ๋์ง ์๋๋ก ํด์ผ ํฉ๋๋ค.
๋งค์ฐ ์ข์ ์๋ฃจ์ ์ ํฉํ ๋ฆฌ, ์๋น์ค ๋ก์ผ์ดํฐ, IoC ์ปจํ ์ด๋์ ๊ฐ์ ํน์ ๊ฐ์ฒด ๋ฐ ๋ชจ๋ ๋ด์์ ์๋ก์ด ๊ฐ์ฒด ์์ฑ์ ์ง์คํ๋ ๋ฏธ์น ์์ด๋์ด์ ๋๋ค.
์ด๋ค ์๋ฏธ์์ ๊ทธ๋ฌํ ๊ฒฐ์ ์ "์ํํธ์จ์ด ์์คํ ์ด ๋ง์ ๋์์ ์ง์ํด์ผ ํ ๋๋ง๋ค ์ ์ฒด ๋ชฉ๋ก์ด ์์คํ ์ ํ ๋ชจ๋์๋ง ์๋ ค์ ธ์ผ ํ๋ค"๋ ๋จ์ผ ์ ํ ์์น์ ๋ฐ๋ฆ ๋๋ค .
๋ฐ๋ผ์ ํฅํ์ ์๋ก์ด ์ต์ (๋๋ ๊ณ ๋ ค ์ค์ธ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ์ ๊ฐ์ด ์๋ก์ด ๊ตฌํ)์ ์ถ๊ฐํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด ์ ๋ณด๋ฅผ ํฌํจํ๋ ๋ชจ๋๊ณผ ๋ค๋ฅธ ๋ชจ๋ ๋ชจ๋์ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ์ํฅ์ ๋ฐ์ง ์๊ณ ํ์์ฒ๋ผ ์์ ์ ๊ณ์ํ ์ ์์ต๋๋ค.
์ 1
. new ArrayList
_ List.new()
_
์๋ฅผ ๋ค์ด ์ปดํ์ผ๋ฌ๋ ๋ค๋ฅธ ์ค๋ ๋์์ ๊ฐ์ฒด์ ๋ํ ํธ์ถ์ด ์์์ ํ์ธํ๊ณ ๊ฑฐ๊ธฐ์ ์ค๋ ๋ ์์ ๊ตฌํ์ ๋ฐฐ์นํฉ๋๋ค. ๋๋ ์ํธ ์ค๊ฐ์ ์ฝ์ ์ด ๋๋ฌด ๋ง์ผ๋ฉด LinkedList๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋ฉ๋๋ค.
์ 2
์๋ฅผ ๋ค์ด ์ด๊ฒ์ ์ ๋ ฌ์์ ์ด๋ฏธ ๋ฐ์ํ์ต๋๋ค. ์ปฌ๋ ์
์ ์ ๋ ฌํ๊ธฐ ์ํด ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ง์ง๋ง์ผ๋ก ์์ฑํ ๊ฒ์ด ์ธ์ ์
๋๊น? ๋์ ์ด์ ๋ชจ๋๊ฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉ Collections.sort()
ํ๊ณ ์ปฌ๋ ์
์ ์์๋ Comparable ์ธํฐํ์ด์ค(comparable)๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค.
sort()
10๊ฐ ๋ฏธ๋ง์ ์์ ์ปฌ๋ ์
์ ๋ฉ์๋์ ์ ๋ฌํ๋ฉด ํต ์ ๋ ฌ์ด ์๋ ๋ฒ๋ธ ์ ๋ ฌ(๋ฒ๋ธ ์ ๋ ฌ)๋ก ์ ๋ ฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค .
์ 3
์ปดํ์ผ๋ฌ๋ ์ด๋ฏธ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด๊ณ ์์ผ๋ฉฐ ์ฝ๋๋ฅผ StringBuilder.append()
.
9.2 ์ค์ ์์กด์ฑ ์ญ์
์ด์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ์ ์ ์ด๋ก ๊ณผ ์ค์ ๋ฅผ ์ด๋ป๊ฒ ๊ฒฐํฉํ ์ ์๋์ง ์๊ฐํด ๋ด ์๋ค. ๋ชจ๋์ด ์ข ์์ฑ ์ญ์ ์ ์๋ฐํ์ง ์๊ณ "์ข ์์ฑ"์ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑํ๊ณ ์์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ชจ๋์ ์ค๊ณํ ๋ ์ค์ค๋ก ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
- ๋ชจ๋์ด ํ๋ ์ผ, ์ํํ๋ ๊ธฐ๋ฅ
- ๊ทธ๋ฐ ๋ค์ ๋ชจ๋์ ํ๊ฒฝ์์ ํ์ํฉ๋๋ค. ์ฆ, ์ฒ๋ฆฌํด์ผ ํ ๊ฐ์ฒด/๋ชจ๋์ด ๋ฌด์์ธ์ง;
- ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ทธ๊ฒ์ ์ด๋ป๊ฒ ์ป์ ๊ฒ์ ๋๊น?
์ข ์์ฑ ์ญ์ ์ ์์น์ ์ค์ํ๋ ค๋ฉด ๋ชจ๋์์ ์ฌ์ฉํ๋ ์ธ๋ถ ๊ฐ์ฒด์ ํด๋น ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ ํ์คํ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
๋ค์ ์ต์ ์ด ์์ต๋๋ค.
- ๋ชจ๋ ์์ฒด๊ฐ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
- ๋ชจ๋์ ์ปจํ ์ด๋์์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๋ชจ๋์ ๊ฐ์ฒด๊ฐ ์ด๋์์ ์๋์ง ์ ํ ๋ชจ๋ฆ ๋๋ค.
๋ฌธ์ ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ค๋ฉด ํน์ ์ ํ์ ์์ฑ์๋ฅผ ํธ์ถํด์ผ ํ๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ชจ๋์ด ์ธํฐํ์ด์ค๊ฐ ์๋ ํน์ ๊ตฌํ์ ์ข ์๋๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ์ฝ๋์์ ๊ฐ์ฒด๋ฅผ ๋ช ์์ ์ผ๋ก ์์ฑํ์ง ์์ผ๋ ค๋ฉด Factory Method ํจํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค .
"์์ ์ new๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์ง์ ์ธ์คํด์คํํ๋ ๋์ ํด๋ผ์ด์ธํธ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ ์ผ๋ถ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์ธํฐํ์ด์ค๋ ํญ์ ์ฌ๋ฐ๋ฅธ ๋์์ธ์ผ๋ก ์ฌ์ ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์์ค ๋ชจ๋์ ์ฌ์ฉํ ๋ ์ด๋ ์ ๋ ์ ์ฐ์ฑ์ ์ป์ ์ ์์ต๋๋ค. ์์ ์์ค ๋ชจ๋์์" .
๊ด๋ จ ๊ฐ์ฒด์ ๊ทธ๋ฃน ๋๋ ํจ๋ฐ๋ฆฌ๋ฅผ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ Factory Method ๋์ Abstract factory๊ฐ ์ฌ์ฉ๋ฉ๋๋ค .
9.3 ์๋น์ค ๋ก์ผ์ดํฐ ์ฌ์ฉ
๋ชจ๋์ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด๋ก๋ถํฐ ํ์ํ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์์คํ ์๋ ๋ชจ๋์ด ๊ฐ์ฒด๋ฅผ "๋ฃ๊ณ " ์ ์ฅ์์์ ๊ฐ์ฒด๋ฅผ "๊ฐ์ ธ์ฌ" ์ ์๋ ์ผ๋ถ ๊ฐ์ฒด ์ ์ฅ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์๋น์ค ๋ก์ผ์ดํฐ ํจํด์ ์ํด ๊ตฌํ๋๋ฉฐ , ์ฃผ์ ์์ด๋์ด๋ ํ๋ก๊ทธ๋จ์ด ํ์ํ ์ ์๋ ๋ชจ๋ ์ข ์์ฑ(์๋น์ค)์ ์ป๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค.
ํฉํ ๋ฆฌ์์ ์ฃผ์ ์ฐจ์ด์ ์ Service Locator๊ฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์ง๋ง ์ค์ ๋ก๋ ์ด๋ฏธ ์ธ์คํด์คํ๋ ๊ฐ์ฒด๋ฅผ ํฌํจํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค(๋๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ฌ ์์น/๋ฐฉ๋ฒ์ ์๊ณ ์์ฑํ๋ ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ํธ์ถ์์ ํ ๋ฒ๋ง). ํธ์ถํ ๋๋ง๋ค ํฉํ ๋ฆฌ๋ ์์ ํ ์์ ๊ถ์ ๊ฐ๊ณ ์ํ๋ ๋๋ก ๋ฌด์์ด๋ ํ ์ ์๋ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
์ค์ ! ์๋น์ค ๋ก์ผ์ดํฐ๋ ์ด๋ฏธ ์กด์ฌํ๋ ๋์ผํ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์์ฑํฉ๋๋ค . ๋ฐ๋ผ์ ๋ค๋ฅธ ์ฌ๋์ด ๋์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก Service Locator์์ ๋ฐ๊ธํ ๊ฐ์ฒด์ ๋งค์ฐ ์ฃผ์ํด์ผ ํฉ๋๋ค.
์๋น์ค ๋ก์ผ์ดํฐ์ ๊ฐ์ฒด๋ ๊ตฌ์ฑ ํ์ผ์ ํตํด ์ง์ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ ์ค์ ๋ก ํ๋ก๊ทธ๋๋จธ์๊ฒ ํธ๋ฆฌํ ๋ฐฉ์์ผ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค. Service Locator ์์ฒด๋ ์ ์ ๋ฉ์๋ ์ธํธ, ์ฑ๊ธํค ๋๋ ์ธํฐํ์ด์ค๊ฐ ์๋ ์ ์ ํด๋์ค์ผ ์ ์์ผ๋ฉฐ ์์ฑ์ ๋๋ ๋ฉ์๋๋ฅผ ํตํด ํ์ํ ํด๋์ค๋ก ์ ๋ฌ๋ ์ ์์ต๋๋ค.
Service Locator๋ ๋๋๋ก ์ํฐ ํจํด์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ ๊ถ์ฅ๋์ง ์์ต๋๋ค(์์์ ์ฐ๊ฒฐ์ ์์ฑํ๊ณ ์ข์ ๋์์ธ์ ๋ชจ์๋ง ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋๋ค). Mark Seaman์์ ์์ธํ ๋ด์ฉ์ ์ฝ์ ์ ์์ต๋๋ค.
9.4 ์์กด์ฑ ์ฃผ์
๋ชจ๋์ "๋ง์ด๋" ์ข ์์ฑ์ ๋ํด ์ ํ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ์๋์ ํ์ํ ๊ฒ๋ง ๊ฒฐ์ ํ๊ณ ํ์ํ ๋ชจ๋ ์ข ์์ฑ์ ๋ค๋ฅธ ์ฌ๋์ด ์ธ๋ถ์์ ์ ๊ณต(๋์ )ํฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ์์กด์ฑ ์ฃผ์ ์ ๋๋ค . ์ผ๋ฐ์ ์ผ๋ก ํ์ํ ์ข ์์ฑ์ ์์ฑ์ ๋งค๊ฐ ๋ณ์(์์ฑ์ ์ฃผ์ ) ๋๋ ํด๋์ค ๋ฉ์๋(Setter ์ฃผ์ )๋ฅผ ํตํด ์ ๋ฌ๋ฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ข ์์ฑ ์์ฑ ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋๋ก ํฉ๋๋ค. ๋ชจ๋ ์์ฒด ๋์ ์ข ์์ฑ ์์ฑ์ ์ธ๋ถ์ ๋๊ตฐ๊ฐ์ ์ํด ์ ์ด๋ฉ๋๋ค. ๊ฐ์ฒด์ ํ์ฑ ์ด๋ฏธ ํฐ์ ๋ชจ๋์ ์๋์ ์ด๋ฉ๋๋ค. ์์ฑํ๋ ์ฌ๋์ด ์๋๋ผ ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ๋ฅผ ์ํด ์์ฑํฉ๋๋ค.
์ด๋ฌํ ๋ฐฉํฅ ์ ํ์ ์ ์ด ์ญ์ ๋๋ ํ ๋ฆฌ์ฐ๋ ์์น ์ด๋ผ๊ณ ํฉ๋๋ค . "์ ํํ์ง ๋ง์ธ์. ์ ํ๋๋ฆฌ๊ฒ ์ต๋๋ค."
์ด๊ฒ์ ๊ฐ์ฅ ์ ์ฐํ ์๋ฃจ์ ์ผ๋ก ๋ชจ๋์ ์ต๋์ ์์จ์ฑ์ ๋ถ์ฌํฉ๋๋ค . ์ฐ๋ฆฌ๋ ๋ชจ๋๋ง์ด "๋จ์ผ ์ฑ ์ ์์น"์ ์์ ํ ๊ตฌํํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ๋ชจ๋์ ๋ค๋ฅธ ๊ฒ์ ๋ํด ๊ฑฑ์ ํ์ง ์๊ณ ์์ ์ ์ ์ํํ๋ ๋ฐ ์์ ํ ์ง์คํด์ผ ํฉ๋๋ค.
์์ ์ ํ์ํ ๋ชจ๋ ๊ฒ์ ๋ชจ๋์ ์ ๊ณตํ๋ ๊ฒ์ ์ ์ ํ "์ ๋ฌธ๊ฐ"๊ฐ ์ฒ๋ฆฌํด์ผ ํ๋ ๋ณ๋์ ์์ ์ ๋๋ค(์ผ๋ฐ์ ์ผ๋ก ํน์ ์ปจํ ์ด๋์ธ IoC ์ปจํ ์ด๋๋ ์ข ์์ฑ ๋ฐ ํด๋น ๊ตฌํ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํฉ๋๋ค).
์ฌ์ค ์ฌ๊ธฐ์ ๋ชจ๋ ๊ฒ์ ์ถ๊ณผ ๊ฐ์ต๋๋ค. ์ ์กฐ์ง ๋ ํ์ฌ์์ ํ๋ก๊ทธ๋๋จธ ํ๋ก๊ทธ๋จ, ์ฑ ์, ์ปดํจํฐ ๋ฐ ์ ๋ฌด์ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ฌ๋ฌด์ค ๊ด๋ฆฌ์๊ฐ ๊ตฌ์ ํ์ฌ ์ ๊ณตํฉ๋๋ค. ๋๋ ํ๋ก๊ทธ๋จ์ ์์ ๋ฅผ ์์ฑ์๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ชจ๋์ ์์ด์ด์ ๋ํด ์๊ฐํด์๋ ์๋๋ฉฐ ๋ถํ ์์ฒด๊ฐ ์๋ ๋ค๋ฅธ ์ฌ๋์ด ์์ฑ์๋ฅผ ์กฐ๋ฆฝํ๋ ๋ฐ ๊ด์ฌํฉ๋๋ค.
์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๊ฐ์ ์ข ์์ฑ์ ์ค๋ช ํ๋ ๊ฒ(Dependency Inversion) + ์ด๋ฌํ ์ข ์์ฑ์ ์ฌ๋ฐ๋ฅธ ์์ฑ ๋ฐ ์ฃผ์ (์ฃผ๋ก ์ข ์์ฑ ์ฃผ์ )์ด ๋ถ๋ฆฌ๋ฅผ ์ํ ํต์ฌ ๊ธฐ์ ์ด๋ผ๊ณ ํด๋ ๊ณผ์ธ์ด ์๋๋๋ค .
๊ทธ๊ฒ๋ค์ ์ฝ๋์ ๋์จํ ๊ฒฐํฉ, ์ ์ฐ์ฑ, ๋ณ๊ฒฝ์ ๋ํ ์ ํญ, ์ฌ์ฌ์ฉ ๋ฐ ๋ค๋ฅธ ๋ชจ๋ ๊ธฐ์ ์ด ๊ฑฐ์ ์๋ฏธ๊ฐ ์๋ ํ ๋ ์ญํ ์ ํฉ๋๋ค. ์ด๊ฒ์ ๋์จํ ๊ฒฐํฉ๊ณผ ์ข์ ์ํคํ ์ฒ์ ๊ธฐ์ด์ ๋๋ค.
Inversion of Control์ ์์น(Dependency Injection ๋ฐ Service Locator์ ํจ๊ป)์ Martin Fowler๊ฐ ์์ธํ ์ค๋ช ํฉ๋๋ค. ๊ทธ์ ๋ ๊ธฐ์ฌ "Inversion of Control Containers and the Dependency Injection pattern" ๋ฐ "Inversion of Control" ์ ๋ํ ๋ฒ์ญ์ด ์์ต๋๋ค .