๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์Šคํ„ฐ๋””/์˜ค๋ธŒ์ ํŠธ

[์˜ค๋ธŒ์ ํŠธ] 15์žฅ '๋””์ž์ธ ํŒจํ„ด๊ณผ ํ”„๋ ˆ์ž„์›Œํฌ'

by moon101 2023. 1. 21.
15์žฅ์€ ์„ค๊ณ„๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด๊ณผ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์ด์ „ movie ์˜ˆ์ œ์— ์ ์šฉ๋œ ๋””์ž์ธ ํŒจํ„ด์„ ์†Œ๊ฐœํ•œ๋‹ค. 

 

๋””์ž์ธ ํŒจํ„ด์ด๋ž€? 

- ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‹ค(์„ค๊ณ„ ์žฌ์‚ฌ์šฉ).

- ๋””์ž์ธ ํŒจํ„ด์€ ํŠน์ • ์ •ํ™ฉ(context)๋‚ด์—์„œ ์ผ๋ฐ˜์ ์ธ ์„ค๊ณ„ ๋ฌธ์ œ(problem)๋ฅผ ํ•ด๊ฒฐ(solution)ํ•˜๋ฉฐ, ํ˜‘๋ ฅํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค ์‚ฌ์ด์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์„œ์ˆ ํ•œ๋‹ค(p.516).

- ํŒจํ„ด์€ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ์˜ ํ…œํ”Œ๋ฆฟ์ด๋‹ค(p.517).

- ํŠน์ •ํ•œ ๋ณ€๊ฒฝ์„ ์บก์Šํ™”ํ•จ์œผ๋กœ์จ ํ˜‘๋ ฅ์„ ์ผ๊ด€์„ฑ ์žˆ๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ๋”ฐ๋ผ์„œ, ์–ด๋–ค ๋””์ž์ธ ํŒจํ„ด์ด ์–ด๋–ค ๋ณ€๊ฒฝ์„ ์บก์Šํ™”ํ•˜๋Š”์ง€๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. 

 

 

Strategy ํŒจํ„ด

  • ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋™์ ์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์—ญํ• ๊ณผ ์ฑ…์ž„์˜ ์ง‘ํ•ฉ ์ œ๊ณต

Bridge ํŒจํ„ด

  • ์ถ”์ƒํ™”์˜ ์กฐํ•ฉ์œผ๋กœ ์ธํ•œ ํด๋ž˜์Šค์˜ ํญ๋ฐœ์ ์ธ ์ฆ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ์ถ”์ƒํ™”์™€ ๊ตฌํ˜„์˜ ๋‘ ๊ฐœ์˜ ์ปค๋‹ค๋ž€ ์ง‘ํ•ฉ์œผ๋กœ ๋ถ„ํ•ดํ•จ์œผ๋กœ์จ ์„ค๊ณ„๋ฅผ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ฆ

Observer ํŒจํ„ด

  • ์œ ์—ฐํ•œ ํ†ต์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋Š” ์—ญํ• ๊ณผ ์ฑ…์ž„์˜ ์ง‘ํ•ฉ ์ œ๊ณต

Composite ํŒจํ„ด

  • client๊ฐ€ ๊ฐœ๋ณ„ ๊ฐ์ฒด์™€ ๋ณตํ•ฉ ๊ฐ์ฒด๋ฅผ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Œ. component, composite, leaf์œผ๋กœ ๊ตฌ์„ฑ๋จ
  • ๊ฐœ๋ณ„ ๊ฐ์ฒด์™€ ๋ณตํ•ฉ ๊ฐ์ฒด๋ผ๋Š” ๊ฐ์ฒด์˜ ์ˆ˜์™€ ๊ด€๋ จ๋œ ๋ณ€๊ฒฝ์„ ์บก์Šํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ž„

Template Method ํŒจํ„ด

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์บก์Šํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•ฉ์„ฑ ๊ด€๊ณ„๊ฐ€ ์•„๋‹Œ ์ƒ์† ๊ด€๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
  • ์ถ”์ƒ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ณ€๊ฒฝ์„ ์บก์Šํ™”ํ•˜๋Š” ํ•ฉ์„ฑ๊ณผ ๋‹ฌ๋ฆฌ ์ƒ์†์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ณ€๊ฒฝ์„ ์บก์Šํ™”ํ•ด์•ผ ํ•จ
  • ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ตฌ์ฒด์ ์ธ ๋‹จ๊ณ„๋Š” ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ๋ณ€๊ฒฝ์„ ์บก์Šํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋””์ž์ธ ํŒจํ„ด

Decorator ํŒจํ„ด

  • ๊ฐ์ฒด์˜ ํ–‰๋™์„ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํŒจํ„ด์œผ๋กœ์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ์ฒด์˜ ํ–‰๋™์„ ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด ํ•ฉ์„ฑ ์‚ฌ์šฉ
  • ์„ ํƒ์ ์ธ ํ–‰๋™์˜ ๊ฐœ์ˆ˜์™€ ์ˆœ์„œ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์„ ์บก์Šํ™” ํ•  ์ˆ˜ ์žˆ์Œ

ํ—ค๋“œํผ์ŠคํŠธ ๋””์ž์ธ ํŒจํ„ด ์ฑ…์—๋„ ๋น„์Šทํ•œ ๋‚ด์šฉ์ด ๋‚˜์˜ค๋Š”๋ฐ, ํŒจํ„ด์„ ๋„ˆ๋ฌด ํ•จ๋ถ€๋กœ ํƒ€๋‹นํ•œ ์ด์œ  ์—†์ด ์ ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ์–ด๋–ค ํŒจํ„ด์„ ์ ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ง€๋„ ์•Œ์•„์•ผ ํ•˜๊ณ  ์ด์œ ์—†์ด ์ ์šฉ๋œ ํŒจํ„ด์€ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์„(ํŠนํžˆ, ํŒจํ„ด์— ์ต์ˆ™ํ•œ ์‚ฌ๋žŒ๋“ค) ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•  ๋ฟ์ด๋‹ค. 

 

ํŒจํ„ด์€ ๋ณต์žก์„ฑ์˜ ๊ฐ€์น˜๊ฐ€ ๋‹จ์ˆœ์„ฑ์„ ๋„˜์–ด์„ค ๋•Œ๋งŒ ์ •๋‹นํ™”๋ผ์•ผ ํ•œ๋‹ค. p.522

ํŒจํ„ด์„ ํ–ฅํ•ด ๋ฆฌํŒฉํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํŒฉํ„ฐ๋ง ์นดํƒˆ๋กœ๊ทธ ์ œ๊ณต

 

 

ํ”„๋ ˆ์ž„์›Œํฌ๋ž€?

- ์ถ”์ƒ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์ธ์Šคํ„ด์Šค ์‚ฌ์ด์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ์‹œ์Šคํ…œ ์ „์ฒด ํ˜น์€ ์ผ๋ถ€๋ฅผ ๊ตฌํ˜„ํ•ด ๋†“์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„ค๊ณ„

- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ˜„์žฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ณจ๊ฒฉ (์ฝ”๋“œ ์žฌ์‚ฌ์šฉ)

์˜์กด์„ฑ์„ ์—ญ์ „์‹œํ‚จ ๊ฐ์ฒด์ง€ํ–ฅ ๊ตฌ์กฐ์—์„œ๋Š” ๋ฐ˜๋Œ€๋กœ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์†ํ•˜๋Š” ์„œ๋ธŒํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ฐœ๋ณ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ œ์–ด ํ๋ฆ„์˜ ์ฃผ์ฒด๊ฐ€ ์ด๋™ํ•œ๋‹ค. ์ฆ‰, ์˜์กด์„ฑ์„ ์—ญ์ „์‹œํ‚ค๋ฉด ์ œ์–ด ํ๋ฆ„์˜ ์ฃผ์ฒด ์—ญ์‹œ ์—ญ์ „๋œ๋‹ค. ์ด๋ฅผ ์ œ์–ด ์—ญ์ „(Inversion of Control) ์›๋ฆฌ, ๋˜๋Š” ํ• ๋ฆฌ์šฐ๋“œ(Hollywood) ์›๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค. p.529

 

๋Œ“๊ธ€