10. ํด๋์ค
ํด๋์ค ์ฒด๊ณ
๊ณต๊ฐ์์ ๋น๊ณต๊ฐ ํ์์ผ๋ก ์งํ๋์ด ์ถ์ํ ๋จ๊ณ๊ฐ ์์ฐจ์ ์ผ๋ก ๋ด๋ ค๊ฐ๋ค.
์บก์ํ
๋ณ์์ ์ ํธ๋ฆฌํฐ ํจ์๋ ๊ฐ๋ฅํ ๊ณต๊ฐํ์ง ์๋ ํธ์ด ๋ซ์ง๋ง ๋ฐ๋์ ์จ๊ฒจ์ผ ํ๋ค๋ ๋ฒ์น๋ ์๋ค.
ํ
์คํธ์์ ์ฌ์ฉํ๋ค๋ฉด protected ๋ ๊ณ ๋ คํ ๋งํ๋ค. ํ์ง๋ง, ๊ทธ ์ ์ ๋น๊ณต๊ฐ ์ํ๋ฅผ ์ ์งํ ์จ๊ฐ ๋ฐฉ๋ฒ์ ๊ฐ๊ตฌํ๋ค.
์บก์ํ๋ฅผ ํ์ด์ฃผ๋ ๊ฒฐ์ ์ ์ธ์ ๋ ์ตํ์ ์๋จ์ด๋ค.
ํด๋์ค๋ ์์์ผ ํ๋ค.
ํด๋์ค๋ ์์์ผ ํ๋ค. ํด๋์ค๋ฅผ ์ค๊ณํ ๋๋ ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ‘์๊ฒ’ ๊ฐ ๊ธฐ๋ณธ ๊ท์น์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ผ๋ง๋ ์์์ผ ํ ๊น? ํจ์๋ ๋ฌผ๋ฆฌ์ ์ธ ํ ์๋ก ํฌ๊ธฐ๋ฅผ ์ธก์ ํ๋ค.
ํด๋์ค์์๋ ํด๋์ค๊ฐ ๋งก์ ์ฑ
์์ ์ผ๋ค.
ํด๋์ค ์ด๋ฆ์ ํด๋น ํด๋์ค ์ฑ
์์ ๊ธฐ์ ํด์ผ ํ๋ค.
์ค์ ๋ก ์๋ช
์ ํด๋์ค ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ์ฒซ ๋ฒ์งธ ๊ด๋ฌธ์ด๋ค. ๊ฐ๊ฒฐํ ์ด๋ฆ์ด ๋ ์ค๋ฅด์ง ์๋๋ค๋ฉด ํ์ ๋งก์ ์ญํ ์ด ๋๋ฌด ๋ง์ด ๋๋ฌธ์ด๋ค.
๋จ์ผ ์ฑ ์ ์์น(SRP : Single Responsibility Principle)
ํด๋์ค๋ ๋ชจ๋์ ๋ณ๊ฒฝํ ์ด์ ๊ฐ ํ๋, ๋จ ํ๋๋ฟ์ด์ด์ผ ํ๋ค๋ ์์น์ด๋ค.
์ฑ
์, ์ฆ ๋ณ๊ฒฝํ ์ด์ ๋ฅผ ํ์
ํ๋ ค ์ ์ฐ๋ค ๋ณด๋ฉด ์ฝ๋๋ฅผ ์ถ์ํํ๊ธฐ๋ ์ฌ์์ง๋ค. ๋ ์ข์ ์ถ์ํ๊ฐ ๋ ์ฝ๊ฒ ๋ ์ค๋ฅธ๋ค.
๋จ์ผ ์ฑ
์ ์์น์ ์ค๊ณ์๊ฐ ๊ฐ์ฅ ๋ฌด์ํ๋ ๊ท์น์ค ํ๋์ด๋ค.
์ํํธ์จ์ด๋ฅผ ๋์๊ฐ๊ฒ ๋ง๋๋ ํ๋๊ณผ ์ํํธ์จ์ด๋ฅผ ๊นจ๋ํ๊ฒ ๋ง๋๋ ํ๋์ ์์ ํ ๋ณ๊ฐ๋ค.
์ฐ๋ฆฌ๋ ์ฃผ๋ก ‘๊นจ๋ํ’ ๋ณด๋ค๋ ‘๋์๊ฐ๋’ ์ ์ด์ ์ ๋ง์ถ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฌผ๋ก ์ค์ํ๊ธด ํ์ง๋ง, ๋ฌธ์ ๋ ๋์๊ฐ๋ ๋ฐ์์ ๋๋ธ๋ค๋ ๊ฒ์ด๋ค. ๋ค์ ๊ด์ฌ์ฌ์ธ ๊นจ๋ํ ์๋ ๊ด์ฌ์ ๊ธฐ์ธ์ด์ง ์๋๋ค.
๊ท๋ชจ๊ฐ ์ด๋์ ๋ ๋๋ ์์คํ
์ ๋
ผ๋ฆฌ๊ฐ ๋ง๊ณ ๋ณต์กํ๋ค.
์ด๋ฐ ๋ณต์ก์ฑ์ ๋ค๋ฃจ๋ ค๋ฉด ์ฒด๊ณ์ ์ธ ์ ๋ฆฌ๊ฐ ํ์๋ค.
๊ทธ๋์ผ ๊ฐ๋ฐ์๊ฐ ์ด๋์ ๋ฌด์์ด ์๋์ง ์ฝ๊ฒ ์ฐพ์ ์ ์๊ณ , ๋ณ๊ฒฝ์ ํ์ ๋ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ์ปดํฌ๋ํธ๋ง ์์๋ ์ถฉ๋ถํ๋ค.
ํฐ ํด๋์ค ๋ช ๊ฐ๋ก ์ด๋ค์ง ๊ฒ๋ณด๋ค ์์ ํด๋์ค ์ฌ๋ฟ์ผ๋ก ์ด๋ค์ง ์์คํ
์ด ํจ์ฌ ๋ฐ๋์งํ๋ค
์์ง๋
ํด๋์ค๋ ์ธ์คํด์ค ๋ณ์ ์๊ฐ ์์์ผ ํ๋ค.
๊ฐ ํด๋์ค ๋ฉ์๋๋ ํด๋์ค ์ธ์คํด์ค ๋ณ์๋ฅผ ํ๋ ์ด์ ์ฌ์ฉํด์ผ ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋๊ฐ ๋ณ์๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ ์๋ก ๋ฉ์๋์ ํด๋์ค๋ ์์ง๋๊ฐ ๋ ๋๋ค.
‘ํจ์๋ฅผ ์๊ฒ, ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ์งง๊ฒ’ ๋ผ๋ ์ ๋ต์ ๋ฐ๋ฅด๋ค๋ณด๋ฉด ๋๋๋ก ๋ช๋ช ๋ฉ์๋ ๋ง์ด ์ฌ์ฉํ๋ ์ธ์คํด์ค ๋ณ์๊ฐ ๋ง์์ง๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋๋ฐ,
์ด๋ ์๋ก์ด ํด๋์ค๋ก ์ชผ๊ฐ์ผ ํ๋ค๋ ์ ํธ๋ค.
์์ง๋๋ฅผ ์ ์งํ๋ฉด ์์ ํด๋์ค ์ฌ๋ฟ์ด ๋์จ๋ค.
๋ณ๊ฒฝํ๊ธฐ ์ฌ์ด ํด๋์ค
๋๋ค์ ์์คํ
์ ์ง์์ ์ธ ๋ณ๊ฒฝ์ด ๊ฐํด์ง๋ค.
๊ทธ๋ฆฌ๊ณ ๋ญ๊ฐ ๋ณ๊ฒฝํ ๋๋ง๋ค ์์คํ
์ด ์๋๋๋ก ๋์ํ์ง ์์ ์ํ์ด ๋ฐ๋ฅธ๋ค.
์ ๊ธฐ๋ฅ์ ์์ ํ๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ ๋ ๊ฑด๋๋ฆด ์ฝ๋๊ฐ ์ต์์ธ ์์คํ
๊ตฌ์กฐ๊ฐ ๋ฐ๋์งํ๋ค.
์ด์์ ์ธ ์์คํ
์ด๋ผ๋ฉด ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ์์คํ
์ ํ์ฅํ ๋ฟ ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง๋ ์๋๋ค.
๋ณ๊ฒฝ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌ
์๊ตฌ์ฌํญ์ ๋ณํ๊ธฐ ๋ง๋ จ์ด๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ ๋ณํ๊ธฐ ๋ง๋ จ์ด๋ค.
๊ฐ์ฒด ์งํฅ์์ ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ ์์ธํ ๊ตฌํ์ ํฌํจํ๋ฉฐ ์ถ์ ํด๋์ค๋ ๊ฐ๋
๋ง ํฌํจํ๋ค๊ณ ๋ฐฐ์ ๋ค.
์์ธํ ๊ตฌํ์ด ์์กดํ๋ ํด๋ผ์ด์ธํธ ํด๋์ค๋ ๊ตฌํ์ด ๋ฐ๋๋ฉด ์ํ์ ๋น ์ง๋ค.
๊ทธ๋ ๊ธฐ์ ์ธํฐํ์ด์ค์ ์ถ์ ํด๋์ค๋ฅผ ์ฌ์ฉํด ๊ตฌํ์ ๋ฏธ์น๋ ์ํฅ์ ๊ฒฉ๋ฆฌํ๋ค.
์์คํ
์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ฉด ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ๋ ๋์ฑ ๋์์ง๋ค.
๊ฒฐํฉ๋๊ฐ ๋ฎ๋ค๋ ์๋ฆฌ๋ ๊ฐ ์์คํ
์์๊ฐ ๋ค๋ฅธ ์์๋ก๋ถํฐ ๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝ์ผ๋ก๋ถํฐ ์ ๊ฒฉ๋ฆฌ๋์ด ์๋ค๋ ์๋ฏธ๋ค.
๊ฒฐํฉ๋๋ฅผ ์ต์๋ก ์ค์ด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ ๋ค๋ฅธ ํด๋์ค ์ค๊ณ ์์น์ธ
DIP (Dependency Inversion Principle) ๋ฅผ ๋ฐ๋ฅธ ํด๋์ค๊ฐ ๋์จ๋ค.
์ด ์์น์ ์์ธํ ๊ตฌํ์ด ์๋๋ผ ์ถ์ํ์ ์์กดํด์ผ ํ๋ค๋ ์์น์ด๋ค.
์ฌ๊ฒฌ์ ๋ง๋ถ์ด๋ฉด…?
์ด๋ฒ ์ฅ์ ์ง์ ๋ณด์ฌ์ฃผ๋ ์ฝ๋๊ฐ ๋ง์ ์ฅ์ด๋ค. ์ด์ง ๊ณ ๋ฏผ์ ํ๊ธด ํ๋ค. ์ฝ๋๋ฅผ ๋ฃ์์ง ๋ง์ง.
ํ์ง๋ง, ์ด ์ ๋ฆฌ๋ฅผ ํ ๋ ‘์ต๋ํ ๊ธ ์์ฃผ๋ก ํ์’ ๋ ์๊ฐ์ ํ๊ธฐ์..
์๋ก ์ ๋์ด๊ฐ๊ณ , ํด๋์ค๋ฅผ ์์ฑํ ๋ ํญ์ ํด๋น ํด๋์ค๊ฐ ์ด๋์ ์์นํ๋ฉด ์ข์์ง, ์ด ํด๋์ค๊ฐ ์ด๋๋ถ๋ถ๊น์ง ์ญํ ์ ๋งก์์ผ ํ๋์ง ๊ณ ๋ฏผํ๋ ๋์๊ฒ
์ด๋ฒ ๋จ์ผ์ฑ
์์์น ์ ๊ณ ๊ฐ๋ฅผ ๋๋์ด๊ฒ ํ๋ค. ํ์ง๋ง, ์์ง๊น์ง ๊ตฌํ์ด ์ฐ์ ์ธ ์ํ์ ํ๋ ๋์๊ฒ ์ ๋ฆฌ๊ฐ ์ฝ์ง ์๋ค.
๊ทธ๋๋ ์ด๋์ ๋ ์ฑ
์ผ๋ก ๋ฐฐ์ด ์์ธก ํตํด ํ์์ ์กฐ๊ธ์กฐ๊ธ์ฉ ์์ ํ๋ ๋ง์๊ฐ์ง์ ๊ฐ์ ธ์ผ๊ฒ ์ง