GoF์˜ ๋””์ž์ธ ํŒจํ„ด, ์ค‘์žฌ์ž ํŒจํ„ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

ํ•ด๋‹น ๊ธ€์€, ๋‹ค์Œ์˜ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์š”์•ฝ

  • ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๋ณต์žกํ•œ ๊ด€๊ณ„๋ฅผ ์ค‘์žฌ์ž๋ผ๋Š” ๊ฒƒ์„ ๋‘์–ด ๋งค์šฐ ํšจ๊ณผ์ ์œผ๋กœ ๋‹จ์ˆœํ™”์‹œํ‚จ๋‹ค.

์˜ˆ์‹œ

  • ์—์–ด์ปจ, ๋ฌธ, ์ฐฝ๋ฌธ, ๋ณด์ผ๋Ÿฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž.
  • ๋ฌธ, ์ฐฝ๋ฌธ์ด ์—ด๋ ค ์žˆ๋‹ค๋ฉด ๋‹ซ๊ณ  ์—์–ด์ปจ์„ ํ‹€์–ด์•ผ ํ•œ๋‹ค.
  • ๋ณด์ผ๋Ÿฌ๋ฅผ ํ‹€๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฌธ, ์ฐฝ๋ฌธ์„ ๋‹ซ๊ณ  ํ‹€์–ด์•ผ ํ•œ๋‹ค.
  • ํ™˜๊ธฐ๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฌธ, ์ฐฝ๋ฌธ์„ ๋‘˜๋‹ค ์—ด์–ด์•ผ ํ•œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ๊ฐ์ฒด๊ฐ„์˜ ์—ฐ๊ฒฐ๋œ ์ž‘์—…์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ, ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค.

  • ์ด๋Ÿด ๊ฒฝ์šฐ ๊ฐ์ฒด๋“ค ์‚ฌ์ด์— ์ค‘์žฌ์ž๋ฅผ ๋‘์–ด, ํ•ด๋‹น ๊ฐ์ฒด๋กœ๋งŒ ์š”์ฒญ์„ ํ•˜๋„๋ก ํ•˜์—ฌ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

Code

  • ์ฝ”๋“œ๋ฅผ github์— ์˜ฌ๋ ค๋‘์—ˆ์œผ๋‚˜, ํฌ๊ฒŒ ๋„์›€๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„ ์ฒจ๋ถ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์ฐพ์•„๊ฐ€๋ณด์ž.
  • ๋‹ค๋งŒ, ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์ •๋ง ์ข‹์ง€ ์•Š๋‹ค.

ํ™œ์šฉ์„ฑ

  • ์‹ค์ œ๋กœ ๋งŒ๋“ค์–ด๋ณด๋‹ˆ ํฌ๊ฒŒ ๋„์›€์ด ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์ƒ๊ฐํ•ด๋ณผ ์ 

  • ์ปคํ”Œ๋ง์ด ๋„ˆ๋ฌด ์‹ฌํ•ด์ง„๋‹ค. (init์—์„œ ๋ฐ›์Œ)
  • ํŠน์ • ํ•จ์ˆ˜์—์„œ ํ•˜๋‚˜์ด์ƒ์˜ ๋™์ž‘(mediator๋กœ ์ „๋‹ฌ)์„ ํ•˜๊ฒŒ ๋˜๋‹ˆ, ๋™์ž‘์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š๋‹ค.
  • ๋ฌดํ•œ ๋ฃจํ”„๊ฐ€ ๋Œ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.
  • ํ•ด๋‹น ํŒจํ„ด์€ ์ค‘๊ฐ„์ž๋ฅผ ๋‘์–ด ์ฑ…์ž„์„ ๋‚˜๋ˆˆ๋‹ค๋Š” ๊ฒƒ์— ๋ฐฉ์ ์„ ๋‘๋ฉด ์ข‹์œผ๋‚˜,
  • ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์œ„์™€ ๊ฐ™์ด ํ•˜๋ฉด ๋งํ•œ๋‹ค. ์ ˆ๋Œ€ ํ•˜์ง€ ๋ง์ž.
  • ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„์ด ์ œ์ผ ์ข‹๋‹ค.

Reference