Design Pattern

1. ์ „๋žต ํŒจํ„ด

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ตฐ์„ ์ •์˜ํ•˜๊ณ  ์บก์Аํ™”ํ•ด์„œ ๊ฐ๊ฐ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ตฐ์„ ์ˆ˜์ •ํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค.

  • ์ „๋žต ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ถ„๋ฆฌํ•ด์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์˜ต์ €๋ฒ„ ํŒจํ„ด

  • ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๊ทธ ๊ฐ์ฒด์— ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์—ฐ๋ฝ์ด ๊ฐ€๊ณ  ์ž๋™์œผ๋กœ ๋‚ด์šฉ์ด ๊ฐฑ์‹ ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ผ๋Œ€๋‹ค(one-to-many)์˜์กด์„ฑ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

3. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด

  • ๊ฐ์ฒด์— ์ถ”๊ฐ€ ์š”์†Œ๋ฅผ ๋™์ ์œผ๋กœ ๋”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ธŒํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋ณด๋‹ค ํœ ์”ฌ ์œ ์—ฐํ•˜๊ฒŒ ๊ธฐ๋Šฅ์„ ํ™•์žํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด

  • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์–ด๋–ค ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์ง€๋Š” ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋งŒ๋“œ๋Š” ์ผ์„ ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ๋งก๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค

5. ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด

๊ตฌ์ƒ ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ์•Š๊ณ ๋„ ์„œ๋กœ ์—ฐ๊ด€๋˜๊ฑฐ๋‚˜ ์˜์กด์ ์ธ ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ง„ ์ œํ’ˆ๊ตฐ์„ ์ƒ์ƒํ•˜๋А ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ƒ ํด๋ž˜์Šค๋Š” ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

6. ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด

  • ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค๊ณ , ๊ทธ ์ธ์Šคํ„ด์Šค๋กœ์˜ ์ „์—ญ ์ ‘๊ทผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

7. ์ปค๋งจ๋“œ ํŒจํ„ด

  • ์‚ฌ์šฉํ•˜๋ฉด ์š”์ฒญ ๋‚ด์—ญ์„ ๊ฐ์ฒด๋กœ ์บก์Аํ™”ํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ์š”์ฒญ ๋‚ด์—ญ์— ๋”ฐ๋ผ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ํ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ๋กœ ๊ธฐ๋กํ•˜๊ฑฐ๋‚˜ ์ž‘์—… ์ทจ์†Œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

8. ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด

  • ํŠน์ • ํด๋ž˜์Šค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ˜ธํ™˜๋˜์ง€ ์•Š์•„ ๊ฐ™์ด ์“ธ ์ˆ˜ ์—†์—ˆ๋˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค๋‹ˆ๋‹ค.

9. ํผ์‚ฌ๋“œ ํŒจํ„ด

  • ํด๋ผ์ด์–ธํŠธ์™€ ๋‚ด๋ถ€ ์‹œ์Šคํ…œ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‚ด๋ถ€ ์‹œ์Šคํ…œ์˜ ๋ณต์žกํ•œ ๋™์ž‘์„ ์•Œ ํ•„์š” ์—†์ด ๋‹จ์ผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

10. ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ ํŒจํ„ด(Template Method Pattern)

  • ํŠน์ •ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋ฉด์„œ ๊ฐ ๋‹จ๊ณ„์˜ ๊ตฌํ˜„์„ ์„œ๋ธŒ ํด๋ž˜์Šค์—๊ฒŒ ๋งก๊ธฐ๋Š” ๋ฐฉ์‹์œผ๋กœ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌ์กฐ๋Š” ๊ณตํ†ต์œผ๋กœ ์œ ์ง€๋˜์ง€๋งŒ ๊ฐ ๋‹จ๊ณ„์˜ ๊ตฌํ˜„์€ ์„œ๋ธŒ ํด๋ž˜์Šค์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

11. ๋ฐ˜๋ณต์ž ํŒจํ„ด(Iterator Pattern)

  • ๋‚ด๋ถ€ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์ง‘ํ•ฉ์ฒด์— ์žˆ๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์— ์ผ์ผ์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋˜ํ•œ ๊ฐ ํ•ญ๋ชฉ์— ์ผ์ผ์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ง‘ํ•ฉ์ฒด๊ฐ€ ์•„๋‹Œ ๋ฐ˜๋ณต์ž ๊ฐ์ฒด๊ฐ€ ์ฑ…์ž„์ง„๋‹ค๋Š” ์žฅ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ทธ๋Ÿฌ๋ฉด ์ง‘ํ•ฉ์ฒด ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•ด์ง€๊ณ , ๊ฐ์ž์—๊ฒŒ ์ค‘์š”ํ•œ ์ผ๋งŒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

12. ์ปดํฌ์ง€ํŠธ ํŒจํ„ด

  • ๊ฐ์ฒด๋ฅผ ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•ด์„œ ๋ถ€๋ถ„-์ „์ฒด ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ปดํฌ์ง€ํŠธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ฐœ๋ณ„ ๊ฐ์ฒด์™€ ๋ณตํ•ฉ ๊ฐ์ฒด๋ฅผ ๋˜‘๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ปดํฌ์ง€ํŠธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด์˜ ๊ตฌ์„ฑ๊ณผ ๊ฐ๋ณ„ ๊ฐ์ฒด๋ฅผ ๋…ธ๋“œ๋กœ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด๋Ÿฐ ๋ณตํ•ฉ ๊ตฌ์กฐ(composite Structure)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณตํ•ฉ ๊ฐ์ฒด์™€ ๊ฐœ๋ณ„ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋˜‘๊ฐ™์€ ์ž‘์—…์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

13. ์ƒํƒœ ํŒจํ„ด(State Pattern)

  • ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€œ์— ๋”ฐ๋ผ์„œ ๊ฐ์ฒด์˜ ํ–‰๋™์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋งˆ์น˜ ๊ฐ์ฒด๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

14. ํ”„๋ก์‹œ ํŒจํ„ด(Proxy Pattern)

  • ํŠน์ • ๊ฐ์ฒด๋กœ์˜ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜๋Š” ๋Œ€๋ฆฌ์ธ (ํŠน์ • ๊ฐ์ฒด๋ฅผ ๋Œˆ๋ณ€ํ•˜๋Š” ๊ฐ์ฒด)์„ ์ œ๊ณตํ•œ๋‹ค.

\

Comming Soon

-----

์ฐธ๊ณ  :

์ฑ…: ํ—ค๋“œ ํผ์ŠคํŠธ ๋””์ž์ธ ํŒจํ„ด(์—๋ฆญ ํ”„๋ฆฌ๋จผ , ์—˜๋ฆฌ์ž๋ฒ ์Šค ๋กญ์Šจ , ์ผ€์ด์‹œ ์‹œ์—๋ผ , ๋ฒ„ํŠธ ๋ฒ ์ด์ธ  ์ €์ž(๊ธ€) ยท ์„œํ™˜์ˆ˜ ๋ฒˆ์—ญ) ํ•œ๋น›๋ฏธ๋””์–ด

์›น: https://www.wikipedia.org/๏ปฟ

Last updated

Was this helpful?