๋ชฉ๋ก์์ฑ์์ฃผ์ (2)
DevLog ๐ถ

๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์คํฐ๋์์ ๋ฐํ ์๋ฃ๋ก ์ค๋นํ๋ ๋ด์ฉ์ธ๋ฐ, ๋ธ๋ก๊ทธ์๋ ์ฎ๊ฒจ๋๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์ ๋ฆฌํ๋ ๊ธ ๐ ํ๋กค๋ก๊ทธ ๋ก๋๋งต์ ํค์๋ ์์ฃผ๋ก ์ ๋ฆฌํ์์ต๋๋ค! ๐ฑ DI (์์กด๊ด๊ณ ์ฃผ์ ) โ๏ธ ์์กดํ๋ค? A๊ฐ B๋ฅผ ์ฌ์ฉํ๊ณ , B๋ฅผ ๋ณ๊ฒฝํ๋ฉด A์ ์ํฅ์ ๋ผ์น๋ ๊ด๊ณ. ์์กด๊ด๊ณ ์ฃผ์ ์ ๋ค์ ์ธ ๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ์์ ์ ์๋ฏธํ๋ค. - ํด๋์ค ๋ชจ๋ธ์ด๋ ์ฝ๋์๋ ๋ฐํ์ ์์ ์ ์์กด๊ด๊ณ๊ฐ ๋๋ฌ๋์ง ์๋๋ก, ์ธํฐํ์ด์ค๋ง ์์กดํด์ผ ํ๋ค. - ๋ฐํ์ ์์ ์ ์์กด๊ด๊ณ๋ ์ปจํ ์ด๋๋ ํฉํฐ๋ฆฌ์ ๊ฐ์ ์ 3์ ์กด์ฌ (ex. IoC container)๊ฐ ๊ฒฐ์ ํ๋ค. - ์์กด๊ด๊ณ๋ ์ฌ์ฉํ ์ค๋ธ์ ํธ์ ๋ํ ๋ ํผ๋ฐ์ค๋ฅผ ์ธ๋ถ์์ ์ ๊ณตํด์ค์ผ๋ก์ ๋ง๋ค์ด์ง๋ค. โ๏ธ DI๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌด์์ด ์ข์๊ฐ? - ๊ฐ์ฒด๊ฐ์ ๊ฒฐํฉ๋ ๊ฐ์ → ์ฌ์ฌ์ฉ์ฑ, ์ ์ง๋ณด..

๋ ๋ฒจ 2 ์์ ์๊ฐ์ ์์กด์ฑ ์ฃผ์ ๊ด๋ จ ๋ด์ฉ์ ๋ค์ผ๋ฉด์ ์กฐ๊ธ ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ณ ์ถ์ด์ ๊ฐ๋จํ๊ฒ ๊ธ์ ์์ฑํด๋ณด๊ณ ์ ํ๋ค. ๊ทธ๋์ ์คํ๋ง์ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์์ฑํ๊ธฐ ์ข์ ํ๋ ์์ํฌ๋ผ๊ณ ๋ง์ ๋ค์ด๋ดค์ง๋ง, ์ ํํ๊ฒ ์์ธ์ง๋ ์ดํดํ ์ ์ด ์์๋ค. ์ ๋ฆฌ๋ฅผ ํตํด์ ์กฐ๊ธ ๋ ๋จธ๋ฆฌ์... ๋ด์๋๊ณ ์ ํ๋ค! โ๏ธ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๊ณผ ๋์์ธ ํจํด ์ฐ์ , ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น์ผ๋ก ๋ง์ด๋ค ์ธ๊ธํ๋ SOLID์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์๊ฐํด๋ณด์. - SRP (๋จ์ผ ์ฑ ์ ์์น): ์ด๋ค ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ๋ ์ด์ ๋ ์ค์ง ํ๋๋ฟ์ด์ด์ผ ํ๋ค. - OCP (๊ฐ๋ฐฉ ํ์ ์์น): ์์ ์ ํ์ฅ์๋ ์ด๋ ค์๊ณ , ์ฃผ๋ณ์ ๋ณํ์๋ ๋ซํ์์ด์ผ ํ๋ค. - LSP (๋ฆฌ์ค์ฝํ ์นํ ์์น): ์๋ธ ํ์ ์ ํญ์ ์์ ์ ๊ธฐ๋ฐ ํ์ ์ผ๋ก ๊ต์ฒดํ ์ ์์ด์ผ ํ๋ค. - ISP (์ธํฐํ์ด์ค..