GOF์˜ ๋””์ž์ธ ํŒจํ„ด 1์žฅ, ์„œ๋ก ์„ ์ •๋ฆฌํ•ด๋ด…๋‹ˆ๋‹ค.

๋จธ๋ฆฌ๋ง

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

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

์„ค๊ณ„ ์‹œ ๋งˆ์ฃผ์ณค๋˜ ๊ฒฝํ—˜๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ท€๋‚ฉ์  ์ถ”๋ก ํ•œ ๊ฒฐ๊ณผ๋ฌผ๋“ค.

  • ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ํŒจํ„ด์€ ๊ฑด์ถ•์—์„œ ๋งŽ์€ ์˜ํ–ฅ์„ ๋ฐ›์•˜๋‹ค. โ€œํฌ๋ฆฌ์Šคํ† ํผ ์•Œ๋ ‰์‚ฐ๋”โ€๋Š” ๊ทธ ์ค‘ ํ•œ๋ช…์ด๋‹ค.
  • โ€๊ฐ ๋””์ž์ธ ํŒจํ„ด์€ ๊ธฐ์กด ํ™˜๊ฒฝ๋‚ด์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ผ์–ด๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์„ค๋ช… ํ›„ ํ•ด๋ฒ•์˜ ํ•ต์‹ฌ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋‘๋ฒˆ ๋‹ค์‹œ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•˜์ง€ ๋ง๊ณ  100๋งŒ๋ฒˆ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ง์ด์ฃ โ€
  • ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์—์„œ๋„ ์ด๋Š” ์ ์šฉ๋œ๋‹ค.

ํŒจํ„ด์ด ๊ฐ€์ง€๋Š” ๋„ค๊ฐ€์ง€ ์š”์†Œ

  1. ํŒจํ„ด ์ด๋ฆ„
    • ํ•œ๋‘ ๋‹จ์–ด๋กœ ์„ค๊ณ„ ๋ฌธ์ œ์™€ ํ•ด๋ฒ•์„ ์„œ์ˆ ํ•œ๋‹ค.
    • ๊ฐ€์žฅ ์–ด๋ ค์šด ๋ถ€๋ถ„.
  2. ๋ฌธ์ œ
    • ์–ธ์ œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?
    • ๊ทธ ๋ฐฐ๊ฒฝ์€ ๋ฌด์—‡์ธ๊ฐ€?
    • ๊ธฐ์กด์— ์–ด๋–ค ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋Š”๊ฐ€?
  3. ํ•ด๋ฒ•
    • ์„ค๊ณ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ
    • ์š”์†Œ๋“ค ๊ฐ„์˜ ๊ด€๊ณ„
    • ์ฑ…์ž„
    • ํ˜‘๋ ฅ๊ด€๊ณ„
    • ๊ตฌ์ฒด์ ์ธ ์„ค๊ณ„๋‚˜ ๊ตฌํ˜„์„ ์„ค๋ช…ํ•˜์ง€๋Š” ์•Š์Œ
    • ๊ฒฐ๊ตญ ํŒจํ„ด์€ template์ด๊ธฐ ๋•Œ๋ฌธ
  4. ๊ฒฐ๊ณผ
    • ๊ฒฐ๊ณผ์™€ ์žฅ๋‹จ์ 
    • ์ด ๋ถ€๋ถ„์ด ๊ฐ€์žฅ ์ค‘์š”.
    • ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—”์ง€๋‹ˆ์–ด๋Š” ์ ์šฉ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ
    • ๋น„์šฉ: ์‹œ๊ฐ„, ์–ธ์–ด์˜ ๋‹ค๋ฆ„, ๊ณต๊ฐ„, ํšจ์œจ, ์žฌ์‚ฌ์šฉ์„ฑ ๋“ฑ

SmallTalk MVC๋ฅผ ์‚ฌ์šฉํ•œ ๋””์ž์ธ ํŒจํ„ด

  • Model, View, Controller๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด์—์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ๋˜๋ฉด ์œ„์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค.
    • ์ด๋ ‡๊ฒŒ View๋ฅผ ๋–ผ์–ด๋‚ด๋Š” ์„ค๊ณ„ ๋ฐฉ๋ฒ•์€ ๋” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์—๋„ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • Model์—์„œ ์ผ์–ด๋‚œ ๋ณ€๊ฒฝ์„ ๋‹ค๋ฅธ ๊ฐ์ฒด ๋“ค์— ๋ฐ˜์˜ํ•˜๋„๋ก ํ•˜์—ฌ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚œ ๊ฐ์ฒด๋Š” ๋ฐ˜์˜์ด ํ•„์š”ํ•œ ๊ฐ์ฒด๋“ค์— ๋Œ€ํ•ด ์•Œํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋ถ„๋ฆฌํ•œ ๊ฒƒ,
    • ์ด๋Ÿฐ ์„ค๊ณ„๋ฅผ ์ผ๋ฐ˜ํ™”ํ•˜๋ฉด Observer Pattern์ด ๋œ๋‹ค.
  • View์—์„œ๋Š” ๊ฐ๊ฐ์˜ View๋ฅผ ์ค‘์ฒฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    • ์ฆ‰, ์ œ์–ดํŒ์ด๋ผ๋Š” View์š”์†Œ๋Š” Button์ด๋ผ๋Š” View์˜ Composition์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
    • ๊ทธ๋Ÿฌ๋ฉด์„œ๋„ ๋ณตํ•ฉ View๋ฅผ ๋‹จ์ผ View๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. (์ œ์–ดํŒ View๋Š” View๋ฅผ ์ƒ์†)
    • ์ด๋Ÿฐ ์„ค๊ณ„๋ฅผ ์ผ๋ฐ˜ํ™”ํ•˜๋ฉด Composite Pattern์ด ๋œ๋‹ค.
  • Controller๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด, User Input์— ๋Œ€ํ•ด ๊ธฐ์กด๊ณผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฆ‰, ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋Œ€์‘ ์ „๋žต์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ Controller๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
    • ์ด๋Š” Strategy Pattern์˜ ํ•œ ์˜ˆ์ด๋‹ค.

๋””์ž์ธ ํŒจํ„ด ๊ธฐ์ˆ ํ•˜๊ธฐ

๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•œ๋‹ค.

  • ํŒจํ„ด์ด๋ฆ„๊ณผ ๋ถ„๋ฅ˜
  • ์˜๋„
  • ๋‹ค๋ฅธ ์ด๋ฆ„
  • ๋™๊ธฐ
    • ํ•ด๋‹น ํŒจํ„ด ์•ˆ์—์„œ ๊ฐ์ฒด ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ?
    • ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋„์™€์คŒ
  • ํ™œ์šฉ์„ฑ
    • ์–ด๋–ค ์ƒํ™ฉ์— ์ ์šฉ๊ฐ€๋Šฅํ• ๊นŒ?
    • ์ž˜๋ชป๋œ ์„ค๊ณ„์˜ ์˜ˆ๋Š” ๋ฌด์—‡์ผ๊นŒ?
    • ์–ด๋–ป๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์„๊นŒ?
  • ๊ตฌ์กฐ
    • Class Diagram
    • Sequence Diagram
  • ์ฐธ์—ฌ์ž
    • ํ•ด๋‹น ๊ตฌ์กฐ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์„ค๋ช…ํ•จ
  • ํ˜‘๋ ฅ ๋ฐฉ๋ฒ•
    • ์ฐธ์—ฌ์ž๋“ค์ด ์–ด๋–ป๊ฒŒ ํ˜‘๋ ฅํ•˜๋Š”์ง€ ์ •์˜ํ•จ
  • ๊ฒฐ๊ณผ
    • ์ด ํŒจํ„ด์„ ์ด์šฉํ•œ ๊ฒฐ๊ณผ๋Š” ๋ฌด์—‡์ธ๊ฐ€?
    • ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€?
    • ์‹œ์Šคํ…œ์—์„œ๋Š” ์–ด๋–ค ๋ถ€๋ถ„์„ ๋…๋ฆฝ์ ์œผ๋กœ ๋‹ค์–‘ํ™”ํ•  ์ˆ˜ ์žˆ์„๊นŒ?
  • ๊ตฌํ˜„
    • ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ ๋ฌด์—‡์ธ๊ฐ€?
    • ์–ธ์–ด์— ๋”ฐ๋ผ ์žˆ๋Š” ํŠน์ด์‚ฌํ•ญ์€ ์žˆ๋Š”๊ฐ€?
  • ์˜ˆ์ œ ์ฝ”๋“œ
    • C++, SmallTalk
  • ์‚ฌ์šฉ์˜ˆ
    • ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด๋“ค์˜ ์˜ˆ์‹œ
  • ๊ด€๋ จ ํŒจํ„ด
    • ์ด ํŒจํ„ด๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด์€ ๋ฌด์—‡์ธ๊ฐ€?
    • ๊ทธ๋“ค๊ณผ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

๋””์ž์ธ ํŒจํ„ด ์นดํƒˆ๋กœ๊ทธ

์ด ์ฑ…์—์„œ๋Š” 23๊ฐœ์˜ ํŒจํ„ด๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค.

  1. 03. Abstract Factory
  • ๊ตฌ์ฒด์  ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์Œ
  • ๊ด€๋ จ์„ฑ์ด ์žˆ๋Š” ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์„ ์ƒ์„ฑ
  • ํ˜น์€ ๋…๋ฆฝ์ ์ธ ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์„ ์ƒ์„ฑ
  • ์ด๋Ÿฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต
  1. 09. Adapter
  • ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณ€ํ™˜
  • ํ˜ธํ™˜์„ฑ์ด ์—†๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋•Œ๋ฌธ์— ํ•จ๊ป˜ ๋™์ž‘์ด ๋ถˆ๊ฐ€ํ•œ ํด๋ž˜์Šค๋ฅผ ๋ฌถ์–ด์คŒ
  1. 10. Bridge
  • ๊ตฌํ˜„๋ถ€์—์„œ ์ถ”์ƒ์ธต์„ ๋ถ„๋ฆฌํ•˜์—ฌ, ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ€ํ˜•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํŒจํ„ด
  1. 21. Builder
  • ๋ณตํ•ฉ ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๊ณผ์ •๊ณผ ํ‘œํ˜„ ๋ฐฉ๋ฒ•์„ ๋ถ„๋ฆฌ
  • ์ƒ์„ฑ ๊ฐ์ฒด๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ๋™์ผํ•œ ์ƒ์„ฑ ์ ˆ์ฐจ๋ฅผ ๊ฐ€์ง์—๋„ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ
  1. 16. Chain of Responsibility
  • ์š”์ฒญ์„ ๋ฐ›๋Š” ๊ฐ์ฒด๋ฅผ ์—ฐ์‡„์ ์œผ๋กœ ๋ฌถ์–ด, ์‹ค์ œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๊ฐ์ฒด๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์ „๋‹ฌํ•˜๋Š” ํŒจํ„ด
  • iOS์˜ Responder chain
  1. 17. Command
  • ์š”์ฒญ ์ž์ฒด๋ฅผ ์บก์Šํ™”ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ํŒจํ„ด
  1. 11. Composite
  • ๊ฐ์ฒด๋“ค์˜ ๊ด€๊ณ„๋ฅผ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๋ถ€๋ถ„-์ „์ฒด๋ฅผ ํ‘œํ˜„ํ•จ
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋‹จ์ผ ๊ฐ์ฒด, ๋ณตํ•ฉ ๊ฐ์ฒด๋ฅผ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ
  1. 12. Decorator
  • ์ฃผ์–ด์ง„ ์ƒํ™ฉ ๋ฐ ์šฉ๋„์— ๋”ฐ๋ผ ํŠน์ • ๊ฐ์ฒด์— ์ฑ…์ž„์„ ๋ง๋ถ™์ด๋Š” ํŒจํ„ด
  • ๊ธฐ๋Šฅ ํ™•์žฅ์ด ํ•„์š”ํ•  ๋•Œ ์„œ๋ธŒํด๋ž˜์‹ฑ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ ๋Œ€์•ˆ์ด ๋  ์ˆ˜ ์žˆ์Œ
  1. 13. Facade
  • ์„œ๋ธŒ์‹œ์Šคํ…œ์— ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ง‘ํ•ฉ์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ํ†ตํ•ฉ๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŒจํ„ด
  • ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ์ข€๋” ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์ƒ์œ„ ์ˆ˜์ค€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต
  1. 06. Factory Method
  • ๊ฐ์ฒด ์ƒ์„ฑ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฏธ๋ฆฌ ์ •์˜
  • ๋‹ค๋งŒ, ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ํด๋ž˜์Šค์˜ ๊ฒฐ์ •์€ ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ์ •ํ•˜๋Š” ํŒจํ„ด
  1. 14. Flyweight
  • ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์„ ๋•Œ, ๊ณต์œ ๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ํŒจํ„ด
  • ํ…์ŠคํŠธ ์ž…๋ ฅ๊ธฐ
  1. 18. Interpreter
  • ์ฃผ์–ด์ง„ ์–ธ์–ด์— ๋Œ€ํ•ด, ๊ทธ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ์œ„ํ•œ ํ‘œํ˜„ ์ˆ˜๋‹จ์„ ์ •์˜
  • ๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ‘œํ˜„ ์ˆ˜๋‹จ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๋ฌธ์ž๋ฅผ ํ•ด์„ํ•˜๋Š” ํ•ด์„๊ธฐ๋ฅผ ์ •์˜ํ•˜๋Š” ํŒจํ„ด
  1. 19. Iterator
  • ๋‚ด๋ถ€ ํ‘œํ˜„๋ถ€๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ , ์–ด๋–ค ๊ฐ์ฒด ์ง‘ํ•œ์— ์†ํ•œ ์›์†Œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณต
  1. 20. Mediator
  • ํ•œ ์ง‘ํ•ฉ์— ์†ํ•œ ๊ฐ์ฒด๋“ค์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์บก์Šํ™”
  • ์„œ๋กœ๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•ˆํ˜ฟ๋ก ํ•จ์œผ๋กœ์„œ ๊ฒฐํ•ฉ๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  1. 21. Memento
  • ํŠน์ • ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ์žก์•„๋‚ด๊ณ  ์‹ค์ฒดํ™”ํ•จ
  • ํ›„์— ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋˜๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŒจํ„ด
  1. 22. Observer
  • ๊ฐ์ฒด ์‚ฌ์ด ์ผ๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•จ
  • ํŠน์ • ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ, ๋ฌถ์ธ ๊ฐ์ฒด๋“ค์ด ๋ณ€ํ™”๋ฅผ ํ†ต์ง€๋ฐ›๊ณ  ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ๋˜๊ฒŒ ํ•˜๋Š” ํŒจํ„ด
  1. 07. Prototype
  • ์ƒ์„ฑํ•  ๊ฐ์ฒด์˜ ์ข…๋ฅ˜๋ฅผ ๋ช…์„ธํ•˜๋Š”๋ฐ ์›ํ˜•์ด ๋˜๋Š” ์˜ˆ์‹œ๋ฌผ์„ ์ด์šฉ
  • ๊ทธ๋ฆฌ๊ณ  ์ด ์›ํ˜•์„ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŒจํ„ด
  1. 15. Proxy
  • ํŠน์ • ๊ฐ์ฒด๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ํ†ต์ œํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด์˜ ๋Œ€๋ฆฌ์ž, placeholder๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŒจํ„ด
  1. 08. Singleton
  • ํŠน์ • ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์˜ค์ง ํ•˜๋‚˜์ž„์„ ๋ณด์žฅ
  • ์ „์—ญ์ ์ธ ์ ‘์ด‰์ ์„ ์ œ๊ณตํ•˜๋Š” ํŒจํ„ด
  1. 23. State
  • ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ์ƒํƒœ์— ๋”ฐ๋ผ ์Šค์Šค๋กœ ํ–‰๋™์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ—ˆ๊ฐ€ํ•˜๋Š” ํŒจํ„ด
  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์˜ ํด๋ž˜์Šค๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž„
  1. 24. Strategy
  • ๋™์ผ ๊ณ„์—ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ตฐ์„ ์ •์˜ํ•˜๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์บก์Šํ™”ํ•จ
  • ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ๋“ค์ด ์ƒํ˜ธ๊ตํ™˜๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค์–ด ์‚ฌ์šฉ์ž์— ์ƒ๊ด€์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  1. 25. Template Method
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ผˆ๋Œ€๋งŒ ์ •์˜ํ•จ
  • ๊ฐ ๋‹จ๊ณ„์—์„œ ์ˆ˜ํ–‰ํ•  ๊ตฌ์ฒด์  ์ฒ˜๋ฆฌ๋Š” ์„œ๋ธŒํด๋ž˜์Šค ์ชฝ์œผ๋กœ ๋ฏธ๋ฃจ๋Š” ํŒจํ„ด
  • ์ฆ‰, ๊ตฌ์กฐ๋Š” ๋‘๋˜, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฒ˜๋ฆฌ๋ฅผ ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜
  1. 26. Visitor
  • ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋Š” ์›์†Œ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•  ์—ฐ์‚ฐ์„ ํ‘œํ˜„ํ•˜๋Š” ํŒจํ„ด
  • ์—ฐ์‚ฐ์„ ์ ์šฉํ•  ์›์†Œ์˜ ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์ƒˆ๋กœ์šด ์—ฐ์‚ฐ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ

Reference