๊ฐ์ฒด ์์ฑ ๊ณผ์ ์ ์ถ์ํํ์ฌ ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ ๋์์ธ ํจํด ๊ทธ๋ฃน์ ๋๋ค. ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ๋ฐฉ์์ด๋ ์์ ์ ์บก์ํํ์ฌ, ์์คํ ์ด ๊ฐ์ฒด์ ์์ฑ ๋ฐฉ์์ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋๋ก ํฉ๋๋ค.
| ํจํด ์ด๋ฆ | ์ ์ | ํน์ง | ์ฅ์ | ๋จ์ | ์ฌ์ฉ ์์ | ๊ณ ์ฐฐ |
|---|---|---|---|---|---|---|
| ์ฑ๊ธํค (Singleton) | ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ํ๋๋ง ์์ฑํ๊ณ , ์ ์ญ์ ์ผ๋ก ์ด ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์๋๋ก ํฉ๋๋ค. | ์ ์ญ ์ ๊ทผ, ๋จ์ผ ์ธ์คํด์ค ๋ณด์ฅ | ๋ฆฌ์์ค, ์ค์ ๊ด๋ฆฌ ๋ฑ ๊ณต์ ๊ฐ์ฒด์ ์ ์ฉ, ์ ๊ทผ ์ฉ์ด | ์ฝ๋ ๊ฒฐํฉ๋ ์ฆ๊ฐ, ํ ์คํธ ์ด๋ ค์, ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๋๊ธฐํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ | ์์คํ ์ค์ , ๋ก๊น , DB ์ฐ๊ฒฐ, ์ค๋ ๋ ํ, ํ๋ฆฐํฐ ์คํ๋ฌ | ์์กด์ฑ ์ฃผ์ ๊ณผ ํจ๊ป ์ฌ์ฉ ๊ถ์ฅ, Spring ํ๋ ์์ํฌ์์ ์ฑ๊ธํค ์ค์ฝํ๋ก ์ฝ๊ฒ ๊ตฌํ |
| ํ๋กํ ํ์ (Prototype) | ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ์ฌ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. | ๊ฐ์ฒด ์์ฑ ๋น์ฉ ๊ฐ์, ์ฑ๋ฅ ํฅ์ | ๋ณต์กํ ๊ฐ์ฒด ์์ฑ, ๋ฐํ์์ ๊ฐ์ฒด ์ถ๊ฐ/์ ๊ฑฐ ์ฉ์ด | ๊ฐ์ฒด ๋ณต์ ๊ณผ์ ๋ณต์ก (ํนํ ์ํ ์ฐธ์กฐ ์), ๊น์ ๋ณต์ฌ/์์ ๋ณต์ฌ ๊ตฌ๋ถ ํ์ | ๋ฌธ์ ํธ์ง๊ธฐ, ๊ทธ๋ํฝ ์๋ํฐ ๋ํ ๋ณต์ฌ, ๊ฒ์ ์บ๋ฆญํฐ ์์ฑ, 3D ๋ชจ๋ธ๋ง ํ๋ก๊ทธ๋จ | ๊ฐ์ฒด ์์ฑ ๋น์ฉ์ด ๋๊ฑฐ๋ ๋ณต์กํ ๋ ํจ๊ณผ์ , ๋ณต์ ๋ก์ง ๋ณ๋ ํด๋์ค ๋ถ๋ฆฌ ๊ถ์ฅ, (๊ฒฝํ)DOM์ผ๋ก ์ฌ๋ฌ๊ฐ์ ๋น์ทํ ์์ ๋ง๋ค๋ ์ ์ฉ, |
| ํฉํ ๋ฆฌ ๋ฉ์๋ (Factory) | ๊ฐ์ฒด ์์ฑ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๊ณ , ์ค์ ์ธ์คํด์ค ์์ฑ์ ์๋ธํด๋์ค์์ ๊ฒฐ์ ํฉ๋๋ค. | ๊ฐ์ฒด ์์ฑ ๋ก์ง๊ณผ ํด๋ผ์ด์ธํธ ์ฝ๋ ๋ถ๋ฆฌ, ๊ฒฐํฉ๋ ๊ฐ์, ๋ค์ํ ๊ฐ์ฒด ์์ฑ ์ ์ฐ, ์๋ก์ด ๊ฐ์ฒด ํ์ ์ถ๊ฐ ์ฉ์ด | ๊ฐ์ฒด ์์ฑ ์ฑ ์ ๋ถ์ฐ, ์ฝ๋ ์ ์ง๋ณด์์ฑ ํฅ์ | ํด๋์ค ์ ์ฆ๊ฐ (์๋์ ์ผ๋ก ๋ณต์ก) | ๋ค์ํ ์ข ๋ฅ์ DB ์ฐ๊ฒฐ, ์ด์์ฒด์ ๋ณ UI ์์, ๊ฒ์ ๊ฐ๋ฐ(๋ค์ํ ์บ๋ฆญํฐ/์์ดํ ), ๋ฌธ์ ์ฒ๋ฆฌ ํ๋ก๊ทธ๋จ | ๊ฐ์ฒด ์์ฑ ๋ก์ง์ ์บก์ํํ๊ณ ํด๋ผ์ด์ธํธ ์ฝ๋๋ก๋ถํฐ ๋ถ๋ฆฌ, OCP ์์น ์ค์ |
| ์ถ์ ํฉํ ๋ฆฌ (Abstract) | ๊ด๋ จ๋ ๊ฐ์ฒด๋ค์ ๊ทธ๋ฃน(์ ํ๊ตฐ)์ ์์ฑํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. | ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์์ฑ, ์ ํ๊ตฐ ๊ต์ฒด/ํ์ฅ ์ฉ์ด | ๊ด๋ จ ๊ฐ์ฒด ๊ทธ๋ฃน ์์ฑ ์ฉ์ด, ์ ํ ์ผ๊ด์ฑ ์ ์ง | ์๋ก์ด ์ ํ๊ตฐ ์ถ๊ฐ ์ด๋ ค์ | ๋ค์ํ ์ด์์ฒด์ UI ์ปดํฌ๋ํธ, ์ฌ๋ฌ ์ข ๋ฅ์ DB ์ง์, ๊ฒ์ ๊ฐ๋ฐ(ํน์ ์ปจ์ ๊ด๋ จ ๊ฐ์ฒด ๊ทธ๋ฃน) | ํฉํ ๋ฆฌ ๋ฉ์๋ ์งํฉ, ๋ ํฐ ๋ฒ์ ๊ฐ์ฒด ์์ฑ ๊ด๋ฆฌ, ์ธํฐํ์ด์ค ์์ ๊ฐ์ X, ํฉํ ๋ฆฌ ๋ฉ์๋๋ ๋จ์ผ ๊ฐ์ฒด ์ผ๊ด์ฑ, ์ถ์ ํฉํ ๋ฆฌ๋ ๊ด๋ จ ๊ฐ์ฒด ๊ทธ๋ฃน ์ผ๊ด์ฑ์ ์ด์ |
| ๋น๋ (Builder) | ๋ณต์กํ ๊ฐ์ฒด๋ฅผ ๋จ๊ณ๋ณ๋ก ์์ฑํฉ๋๋ค. ๊ฐ์ฒด ์์ฑ๊ณผ ํํ์ ๋ถ๋ฆฌํ์ฌ, ๋์ผํ ์์ฑ ํ๋ก์ธ์ค๋ก ๋ค์ํ ํํ์ ์์ฑํ ์ ์์ต๋๋ค. | ๊ฐ์ฒด ์์ฑ ๊ณผ์ ์ธ๋ถํ, ๋ณต์กํ ๊ฐ์ฒด ๋จ์ํ, ๊ฐ๋ ์ฑ ํฅ์, ๋ค์ํ ์ค์ ์ ์ฐ ์ฒ๋ฆฌ, ๋ถ๋ณ ๊ฐ์ฒด ์์ฑ | ๋ณต์กํ ๊ฐ์ฒด ์์ฑ ์ฉ์ด, ์ค์ ์ต์ ์กฐํฉ ์ ์ฐ | ํด๋์ค ์ ์ฆ๊ฐ (์๋์ ์ผ๋ก ๋ณต์ก) | ๋ณต์กํ ์ค์ ์ต์ ๊ฐ์ฒด(์๋์ฐจ, ์ปดํจํฐ), ๋ค์ํ ์กฐํฉ ๋ถํ ๊ฐ์ฒด, ๋ฌธ์ ๋น๋, SQL ์ฟผ๋ฆฌ ๋น๋ | ๋จ์ ๊ฐ์ฒด ์์ฑ์๋ ๋ถํ์ํ ๋ณต์ก์ฑ ์ด๋, ๊ฐ์ฒด ์์ฑ ๊ณผ์ ์ด ๋ณต์กํ๊ณ ๋ค์ํ ์ค์ ํ์ ์ ์ ์ฉ, ์์ฑ์๋ณด๋ค ์ ์ฐ |
์์ฑ ํจํด๋ค์ ๋จ๋ ์ผ๋ก ์ฌ์ฉ๋ ์๋ ์์ง๋ง, ์ฌ๋ฌ ํจํด์ ์กฐํฉํ์ฌ ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ๊ฐ์ฒด ์์ฑ ๋ฉ์ปค๋์ฆ์ ๋ง๋ค ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ๊ฐ๋ฅํ ์กฐํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ถ์ ํฉํ ๋ฆฌ + ํฉํ ๋ฆฌ ๋ฉ์๋: ์ถ์ ํฉํ ๋ฆฌ๋ ์ ํ๊ตฐ์ ์์ฑํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ณ , ๊ฐ ์ ํ๊ตฐ ๋ด์์ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ฒด ์์ฑ์ ํฉํ ๋ฆฌ ๋ฉ์๋์ ์์.
- ๋น๋ + ํ๋กํ ํ์ : ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์กํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ํ๋กํ ํ์ ์ ์ฌ์ฉํ์ฌ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ์ฌ ๋ค์ํ ๋ณํ์ ์์ฑ.
- ์ฑ๊ธํค + ํฉํ ๋ฆฌ ๋ฉ์๋/์ถ์ ํฉํ ๋ฆฌ: ํฉํ ๋ฆฌ ๋ฉ์๋ ๋๋ ์ถ์ ํฉํ ๋ฆฌ ์์ฒด๋ฅผ ์ฑ๊ธํค์ผ๋ก ๋ง๋ค์ด ์ ์ญ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ ํฉํ ๋ฆฌ๋ฅผ ์ ๊ณต.
์์ฑ ํจํด์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฒด ์์ฑ์ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๊ฐ ํจํด์ ํน์ง๊ณผ ์ฅ๋จ์ ์ ์ดํดํ๊ณ , ์ํฉ์ ๋ง๊ฒ ์ ์ ํ ํจํด์ ์ ํํ๊ฑฐ๋ ์กฐํฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.