๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š Computer Science/Design Pattern

[๋””์ž์ธ ํŒจํ„ด] ํŒฉํ† ๋ฆฌ ํŒจํ„ด (Factory Pattern)

by hyebin (Helia) 2023. 3. 17.
๋ฐ˜์‘ํ˜•

ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด (Factory Method Pattern)

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

ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์˜ ์žฅ์ 

  • ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Œ
  • ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ๋”ฐ๋ฆ„
  • ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ์—์„œ ์ƒ์„ฑ์ž ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์ฝ”๋“œ๋ฅผ ๋”์šฑ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ
  • ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™์„ ๋”ฐ๋ฆ„
  • ๊ธฐ์กด client์˜ ์ฝ”๋“œ๋ฅผ ํŒŒ๊ดดํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ

ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์˜ ๋‹จ์ 

  • ํŒจํ„ด์„ ๊ตฌํ˜„ํ•  ๋งŽ์€ ์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ๋„์ž…ํ•ฉ์œผ๋กœ์จ ์ฝ”๋“œ๊ฐ€ ๋ณต์žก ํ•ด ์งˆ ์ˆ˜ ์žˆ์Œ

์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด(Abstract Factory Pattern)

  • ์—ฐ๊ด€๋œ ๊ฐ์ฒด๋“ค์˜ ์ƒ์„ฑ์„ ํ•˜๋‚˜์˜ ํŒฉํ† ๋ฆฌ์—์„œ ๋‹ด๋‹น
  • ํŒฉํ† ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ์ƒ์œ„ ํŒฉํ† ๋ฆฌ(super-factory) ํด๋ž˜์Šค๊ฐ€ ์กด์žฌ

์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด ์žฅ์ 

  • Factory๋กœ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ง„ ๊ฐ ๊ฐ์ฒด๋“ค์ด ์„œ๋กœ compatible ํ•จ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Œ
  • ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ๋”ฐ๋ฆ„
  • ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ์—์„œ ์ƒ์„ฑ์ž ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์ฝ”๋“œ๋ฅผ ๋”์šฑ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ
  • ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™์„ ๋”ฐ๋ฆ„
  • ๊ธฐ์กด client์˜ ์ฝ”๋“œ๋ฅผ ํŒŒ๊ดดํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ

์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด ๋‹จ์ 

  • ํŒจํ„ด์„ ๊ตฌํ˜„ํ•  ๋งŽ์€ ์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ๋„์ž…ํ•ฉ์œผ๋กœ์จ ์ฝ”๋“œ๊ฐ€ ๋ณต์žก ํ•ด ์งˆ ์ˆ˜ ์žˆ์Œ
๋ฐ˜์‘ํ˜•