Abstract Factory Pattern

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

Abstract-Factory

ํ•ด๋‹น ํŒจํ„ด์€ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์„ ์ด์šฉํ•˜๋ฉด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ์„œ๋ธŒํƒ€์ž…์ด ์ถ”๊ฐ€๋˜์–ด๋„ ํŒฉํ† ๋ฆฌ ํด๋ž˜์Šค๋งŒ ์ˆ˜์ •๋  ๋ฟ ํŒฉํ† ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜๋Š” ํด๋ž˜์Šค๋Š” ์ˆ˜์ •๋˜์ง€ ์•Š๋Š”๋‹ค.

์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ์—์„œ์˜ Product๊ฐ€ ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์งˆ ๋•Œ, ์ด ๊ตฌ์„ฑ ์š”์†Œ๋“ค์˜ ์กฐํ•ฉ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ํŒฉํ† ๋ฆฌ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

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

  • AbstractFactory - Product๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ. ๊ธฐ์กด์— Product์˜ ์„œ๋ธŒํƒ€์ž…์„ ์ƒ์„ฑํ•˜๋˜ ๊ฐ์ฒด(Client)๊ฐ€ ์ด์— ์˜์กดํ•˜๊ฒŒ ๋˜์–ด ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์ด ์•„๋‹Œ ์ถ”์ƒ์ ์ธ ๊ฒƒ์— ์˜์กดํ•˜๋„๋ก ์„ค๊ณ„๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

  • ConcreteFactory - ๊ฐ (ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”๊ตฌํ•˜๋Š”) ์™„์„ฑ๋ฌผ ๋‚ด ๋ถ€ํ’ˆ๋“ค์„ ๋งŒ๋“ค๊ณ  ์กฐํ•ฉํ•˜๊ธฐ ์œ„ํ•œ ํŒฉํ† ๋ฆฌ

  • AbstractProduct - ๊ฐ ์™„์„ฑ๋ฌผ ๋‚ด ๋ถ€ํ’ˆ๋“ค

  • Product - ๊ฐ ๋ถ€ํ’ˆ๋“ค์˜ ์„œ๋ธŒํƒ€์ž…

ํŠน์ง•

  • ์‚ฌ์‹ค์ƒ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์„ ํ•œ ๋ฒˆ ๋” ์บก์Аํ™”ํ•˜๋Š” ๊ณผ์ •์— ๊ฐ€๊น๋‹ค.

  • ๊ฐ ํŒฉํ† ๋ฆฌ์˜ ์ธ์Šคํ„ด์Šค๋Š” ํ•˜๋‚˜์”ฉ๋งŒ ์ƒ์„ฑํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ฑ๊ธ€ํ†ค๊ณผ ํ•จ๊ป˜ ์“ฐ์ผ ๋•Œ๊ฐ€ ๋งŽ๋‹ค.

ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ์™€ ์ถ”์ƒ ํŒฉํ† ๋ฆฌ

์‚ผ์„ฑ, LG ์ปดํ“จํ„ฐ๋ฅผ ์ œ์กฐ, ํŒ๋งคํ•˜๋Š” ์ปดํ“จํ„ฐ ์ œ์กฐ ์—…์ฒด์—์„œ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ, ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์„ ์ ์šฉํ•œ๋‹ค๊ณ  ํ•˜์ž.

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ํšŒ์‚ฌ ์ปดํ“จํ„ฐ์˜ ์ฃผ๋ฌธ์ด ๋“ค์–ด์™”๋ƒ์— ๋”ฐ๋ผ ๋ถ„๊ธฐ๋ฅผ ๋‚˜๋ˆ„์–ด ์‚ผ์„ฑ ๋˜๋Š” LG ์ปดํ“จํ„ฐ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ด€๋ จ์ด ์—†๋Š” ๊ฐ์ฒด๊ฐ€ ์ปดํ“จํ„ฐ ์„œ๋ธŒํƒ€์ž…์˜ ์ถ”๊ฐ€/์ œ๊ฑฐ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐ ๋ฐ˜ํ™˜ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜๋Š” ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์ด ์ ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์‹ค ์ปดํ“จํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ถ€ํ’ˆ์€ ์ €๊ธฐ์„œ ๋์ด ์•„๋‹ˆ๋‹ค. ์ˆ˜๋งŽ์€ ๋ถ€ํ’ˆ์— ๋Œ€ํ•ด ๋ชจ๋‘ ํŒฉํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ์ด๋Š” ์ฝ”๋“œ๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , ํŒฉํ† ๋ฆฌ ํด๋ž˜์Šค์˜ ๋นˆ๋ฒˆํ•œ ์ˆ˜์ •์„ ์•ผ๊ธฐํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์„ ์ ์šฉํ•˜์—ฌ ์‚ผ์„ฑ ์ปดํ“จํ„ฐ์˜ ๋ถ€ํ’ˆ์„ ์ƒ์„ฑ, ์กฐ๋ฆฝํ•˜๋Š” ํŒฉํ† ๋ฆฌ์™€ LG ์ปดํ“จํ„ฐ์˜ ๋ถ€ํ’ˆ์„ ์ƒ์„ฑ, ์กฐ๋ฆฝํ•˜๋Š” ํŒฉํ† ๋ฆฌ๋ฅผ ๋งŒ๋“  ๋’ค ์—ฌ๊ธฐ์„œ ๋ถ€ํ’ˆ์„ ์ƒ์„ฑํ•˜๊ณ  ์กฐ๋ฆฝํ•œ๋‹ค.

์ตœ์ข… ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ˜•์„ฑ๋œ๋‹ค.

Abstract-Factory-Example

Last updated