๊ทธ๋Ÿผ ๋””์ž์ธ ํŒจํ„ด์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

๋””์ž์ธ ํŒจํ„ด ์†Œ๊ฐœ

  • ์ธ๊ฐ„์€ ํŒจํ„ด ์ธ์‹์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž‘์—…์— ์žˆ์–ด์„œ๋„ ๊ท€๋‚ฉ์ ์œผ๋กœ ๋ฐœ๊ฒฌํ•œ ์–ด๋– ํ•œ ํŒจํ„ด์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.
  • ์ด๋ ‡๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์—์„œ ํ”ํžˆ ๊ฒช๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ๋‚˜์˜จ ๊ฒƒ์ด ๋””์ž์ธ ํŒจํ„ด
  • ์™„์„ฑ๋œ ์„ค๊ณ„๊ฐ€ ์•„๋‹ˆ๋‹ค.
  • ํŠน์ • ๋ฌธ์ œ๋ฅผ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ํ•ด๊ฒฐํ•˜๋Š” ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ฐ€์ด๋“œ๋กœ ์ƒ๊ฐํ•˜์ž.
  • GoF(Gang of Four), 1994

๋””์ž์ธ ํŒจํ„ด ์žฅ๋‹จ์ 

์žฅ์ 

  1. ์ด๋ฏธ ํ…Œ์ŠคํŠธ๋ฅผ ๋งˆ์นœ ๊ฒ€์ฆ๋œ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด ๊ฐœ๋ฐœ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    • ์ƒˆ ์ฝ”๋“œ ์ž‘์„ฑ์‹œ ๊ณง๋ฐ”๋กœ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
    • ์•„์ง ๋“œ๋Ÿฌ๋‚˜์ง€๋„ ์•Š์•˜๊ณ  ์˜ˆ์ธก๋„ ๋ชปํ•œ ๋ฌธ์ œ๋“ค
    • ์ฆ๋ช…๋œ ํŒจํ„ด์€ ์ด๋Ÿฐ ๋ฌธ์ œ์— ๋Œ€๋น„๋˜์–ด ์žˆ๋‹ค.
  2. ๊ณตํ†ต ์šฉ์–ด ์ •๋ฆฝ์„ ํ†ตํ•œ ๊ฐœ๋ฐœ์ž๋“ค ๊ฐ„์˜ ๋น ๋ฅธ ์˜์‚ฌ์†Œํ†ต์„ ์ด‰์ง„
    • โ€œXX ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ผโ€๋กœ ์˜์‚ฌ์†Œํ†ต ๋
    • ๋‹จ, ๋ชจ๋‘๊ฐ€ ํ•ด๋‹น ํŒจํ„ด, ์šฉ์–ด๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋‹จ์ 

  1. ๊ณ ์น˜๋ ค๋Š” ๋Œ€์ƒ์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค.
    • ์ฑ…์˜ ๊ณผ๋ฐ˜์ˆ˜๋Š” C++ ์–ธ์–ด์˜ ๋ฏธ์ง€์› ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ฏธ๋ด‰์ฑ…์ด๋‹ค.
    • ์ ˆ๋ฐ˜์€ ํ•„์š”์—†๋‹ค ๋ผ๋Š” ๋…ผ๋ฌธ๋„ ์žˆ์—ˆ์Œ
  2. ๊ณง๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ฐธ๊ณ  ๊ฐ€์ด๋“œ๋ฅผ โ€œํŒจํ„ดโ€์ด๋ผ ํ•  ์ˆ˜ ์—†๋‹ค.
  3. ์ž˜๋ชป ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜๋‹ค.
    • ์˜คํžˆ๋ ค ๋ณต์žกํ•ด์ง
  4. ๋น„ํšจ์œจ์ ์ธ ํ•ด๋ฒ•์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
    • ์ถ”์ƒ์ , ๋ฒ”์šฉ์  โ‡’ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ณ ๋ ค โ‡’ ์„ฑ๋Šฅ ์ €ํ•˜
    • ์ฝ”๋“œ ์ค‘๋ณต์ด ๋งŽ์•„์ง
  5. ๋‹ค๋ฅธ ์ถ”์ƒํ™” ๊ธฐ๋ฒ•๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.
    • ์ด๋ฏธ ์กด์žฌํ•˜๋˜ ํ˜„์ƒ์— ์™œ ๊ตณ์ด ๊ฑด์ถ• ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

๋””์ž์ธ ํŒจํ„ด์˜ ์‹ค์ œ ๋ชฉ์ 

  • ๋Œ€์ƒ ๋…์ž: ์ด๋ฏธ OO ์„ค๊ณ„๋ฅผ ์ข€ ํ•ด๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋จธ
  • ์ƒˆ ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ ์ง€์ธ๋ผ๋ฆฌ ๊ณต์œ ํ•˜๋˜ ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌ
    • OO ์„ค๊ณ„ ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์— ํŠนํ™”๋œ ๊ฐ„๋‹จํ•˜๊ณ  ์šฐ์•„ํ•œ ๋ฐฉ๋ฒ•
    • ์žฌํ™œ์šฉ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ์„ค๊ณ„ ๋ฐฉ๋ฒ•
  • ์ฒ˜์Œ ์ฝ๊ณ  ์ดํ•ด ์•ˆ๋˜๋”๋ผ๋„ ๊ดœ์ฐฎ๋‹ค.
  • 100% ์™„์„ฑ๋œ ๋ชฉ๋ก์ด ์•„๋‹ˆ๋‹ค.
    • ํ˜„์žฌ(1994๋…„) OO ์„ค๊ณ„์— ๋Œ€ํ•œ ์ƒ๊ฐ๋“ค์„ ์ •๋ฆฌํ•œ ๊ฒƒ
    • ๊ณ„์† ๋ฐ”๋€” ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.

94๋…„ ์ดํ›„ ์ œ๋Œ€๋กœ๋œ ๋””์ž์ธ ํŒจํ„ด ์ฑ…์ด ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค. == ํ•ด๋‹น ์ฑ…์— ๋ฌธ์ œ๊ฐ€ ๋งŽ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

๋””์ž์ธ ํŒจํ„ด์ด ๋น„ํŒ๋ฐ›๋Š” ์‹ค์ œ ์ด์œ 

  • ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์˜๋„์ ์œผ๋กœ ์•ฝ์„ ํŒ”์•˜๋‹ค.
  • ์„ธ์ƒ์ด ๋ฐ”๋€Œ์—ˆ๋‹ค.
    • ์ž์ฒด ๊ฐœ๋ฐœํŒ€ ์ฆ๊ฐ€
    • ์ œํ’ˆ์— ๋Œ€ํ•œ ์ธ์‹, ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ ๋ณ€ํ™”: ๋ฒ„์ „ ๋ณ„ ๋ฐฐํฌ, ์ง€์› ๊ธฐ๊ฐ„
    • ๋ฐฐํฌ ๋ฐฉ์‹ ๋ณ€ํ™”
    • Git ๋“ฑ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ
    • ์ธํ„ฐ๋„ท์— ๋” ํ›Œ๋ฅญํ•œ ํ•ด๋‹ต์ด ๋งŽ์Œ

๊ทธ๋Ÿฌ๋ฉด ์™œ ๋ฐฐ์šฐ๋‚˜

  • ๊ทธ๋ž˜๋„ ์—ฌ์ „ํžˆ ์–ธ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์•Œ์•„๋‘๊ธฐ๋Š” ํ•˜๋ ค๊ณ .
  • ๊ทธ๋‚˜๋งˆ ๋ช‡ ๊ฐœ ๋งŽ์ด ์“ฐ์ด๋Š” ํŒจํ„ด์ด ์žˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์€ ๋‹คํ˜•์„ฑ์— ๊ธฐ๋ฐ˜ํ•œ ์ถ”์ƒํ™”์— ๊ธฐ์ดˆํ•œ๋‹ค.

๋””์ž์ธ ํŒจํ„ด ๊ณต๋ถ€๋ฒ•

  • ๋””์ž์ธ ํŒจํ„ด ๋ฐฐ์› ๋‹ค๊ณ  ์“ธ์ƒ๊ฐํ•˜์ง€ ๋ง ๊ฒƒ.
    • ๋‚ด ์ฝ”๋“œ๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๋„๋Š”์ง€ ์ดํ•ด๋˜๊ธฐ ์ „๊นŒ์ง„ X
  • ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์—์„œ ํ•ด๋ฒ•์„ ๋จผ์ € ์ฐพ์„ ๊ฒƒ
  • ๋‚จ์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ถ”์ƒ์ ์œผ๋กœ ์ดํ•ด๊ฐ€ ๋˜๋Š” ์ˆ˜์ค€๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค๋ผ.
  • ๋ชจ์ž๋ž€ ์‹ค๋ ฅ์„ ์ˆจ๊ธฐ์ง€ ๋งˆ๋ผ.

์—ฌ๊ธฐ์„œ ๋ฐฐ์šธ ํŒจํ„ด๋“ค

  1. 20. Factory Method
  2. 21. Builder
  3. 08. Singleton
  4. 22. Wrapper(Adapter)
  5. 23. Proxy
  6. 24. Chain of Responsibility
  7. 25. Observer

Reference