์ ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ์๋ธ ํด๋์ค์์ ์ด๋ค ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ง ๊ฒฐ์ ํ๋ ํจํด์ด๋ค. ์ฆ, ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ์ผ์ ์๋ธํด๋์ค์๊ฒ ๋งก๊ธฐ๋๊ฒ์ด๋ค. ํฉํ ๋ฆฌ ํจํด์ 'ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด'๊ณผ '์ถ์ ํฉํ ๋ฆฌ ํจํด'์ผ๋ก ๋๋๋ค. ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด : ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๊ณ , ์ด๋ค ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ง๋ ์๋ธ ํด๋์ค์์ ๊ฒฐ์ ํ๋ค. ์ถ์ ํฉํ ๋ฆฌ ํจํด : ์ถ์ ํฉํ ๋ฆฌ ํจํด์ ๋ง์ ์์ ์ฐ๊ด๋ ์๋ธ ํด๋์ค๋ฅผ ํน์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ํ๋ฒ์ ๊ต์ฒดํ ์ ์๋๋ก ๋ง๋ ๋์์ธ ํจํด์ด๋ค. ์ฅ์ ์๋ก์ด ๊ตฌํ ํด๋์ค๊ฐ ์ถ๊ฐ๋์ด๋ ๊ธฐ์กด Factory์ฝ๋์ ์์ ์์ด ์๋ก์ด Factory๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค -> OCP์์น์ ์งํฌ ์ ์๋ค. ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ฅผ ์ถ์ํ..
๋์์ธํจํด
์ ์ ์ด๋ค ํด๋์ค๊ฐ ์ต์ด ํ๋ฒ๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๋์์ธ ํจํด์ด๋ค. ์ฝ๊ฒ๋งํด, ์ฑ๊ธํค ํจํด์ ํ๋์ ์ธ์คํด์ค๋ง ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๋์์ธ ํจํด์ด๋ค. ์์ฑ์๋ฅผ ์ฌ๋ฌ๋ฒ ํธ์ถํด๋, ์ค์ ๋ก ์์ฑ๋๋ ์ธ์คํด์ค๋ ํ๋์ด๋ค. ์ต์ด๋ก ์์ฑ๋ ์ดํ์ ํธ์ถ๋ ์์ฑ์๋ ์ด๋ฏธ ์ต์ด๋ก ์์ฑํ๋ ์ธ์คํด์ค๋ฅผ ๋ฐํ์ํค๋๋ก ๋ง๋ ๊ฒ์ด๋ค.(์์ฑ์๋ฅผ private์ผ๋ก ์ ์ธํด ๋ค๋ฅธ ๊ณณ์์ ์์ฑํ์ง ๋ชปํ๋๋ก ๋ง๋ค๊ณ , getInstance() ๋ฉ์๋๋ฅผ ํตํด ์ฌ์ฉํ๋๋ก ๊ตฌํํ๋ค) ๊ทธ๋์ ์ธ์คํด์ค๊ฐ ํ์ํ ๋, ๋๊ฐ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ง ์๊ณ ๊ธฐ์กด์ ์ธ์คํด์ค๋ฅผ ํ์ฉํ ์ ์๋ค. *์ธ์คํด์ค : ํด๋์ค์ ํ์ฌ ์์ฑ๋ ์ค๋ธ์ ํธ. ๊ฐ์ฒด ์ฅ์ ํ๋ฒ์ new๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ๊ณ ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ป๊ธฐ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น..