Prototype Pattern

Prototype Pattern (ํ”„๋กœํ† ํƒ€์ž… ํŒจํ„ด)

๊ฑฐ์˜ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ•˜๊ณ ์ž ํ•  ๋•Œ, ์ด๋ฅผ ์ผ์ผ์ด ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

  • Client๊ฐ€ ๊ตฌ์ฒด์ ์ธ ๊ฒƒ(์ƒ์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ConcreteClass)์— ์ ‘๊ทผํ•˜๊ฒŒ ๋œ๋‹ค.

    • ์ด๋ฅผ ์œ„ํ•ด Client๋Š” ๋ชจ๋“  ๊ตฌ์ฒด์  ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๊ตฌ์ฒด์  ํด๋ž˜์Šค๊ฐ€ ์ถ”๊ฐ€๋  ๋•œ๋งˆ๋‹ค Client ๋˜ํ•œ ์ˆ˜์ •๋˜์–ด์•ผ ํ•œ๋‹ค.

  • ๊ฐ์ฒด์˜ ํƒ€์ž…์ด ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ •๋œ๋‹ค.

    • ๊ฐ์ฒด์˜ ํƒ€์ž…์ด ์ •์ ์œผ๋กœ ๊ฒฐ์ •๋˜๋ฏ€๋กœ ์œตํ†ต์„ฑ ์žˆ๊ฒŒ ์ž‘๋™์‹œํ‚ค๊ธฐ ์–ด๋ ต๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ด ๋ฐ”๋กœ ํ”„๋กœํ† ํƒ€์ž… ํŒจํ„ด(Prototype Pattern)์ด๋‹ค.

ํ”„๋กœํ† ํƒ€์ž…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

  • ๊ฐ ๊ตฌ์ฒด์  ํด๋ž˜์Šค๊ฐ€ clone ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” Prototype ์ธํ„ฐํŽ˜์ด์Šค(๋˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค)๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•œ๋‹ค.

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

  • ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ๋Ÿฐํƒ€์ž„์— ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ

Prototype-Pattern
  • Client - ์ถ”์ƒ์ ์ธ ๊ฐ์ฒด๋งŒ ์ฐธ์กฐํ•˜๋ฉฐ clone ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋ณต์ œ๋œ ๊ฐ์ฒด๋ฅผ ํš๋“ํ•œ๋‹ค.

  • Prototype - ํด๋ก  ๋ฉ”์†Œ๋“œ๊ฐ€ ์„ ์–ธ๋œ ์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค

  • ConcretePrototype - ์ž๊ธฐ ์ž์‹ ์„ ๋ณต์ œํ•˜๋Š” clone ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค

ํŠน์ง•

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

  • ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด, ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ํŒฉํ† ๋ฆฌ๊ฐ€ ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜์—ฌ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

Last updated