Factory Method Pattern

https://www.dofactory.com/images/diagrams/net/factory.gif

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

์ฆ‰, ๊ฐ์ฒด ์ƒ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ์„œ๋ธŒ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌ ํ•ด ์ฒ˜๋ฆฌํ•˜๋„๋ก ์บก์Аํ™”ํ•˜๋Š” ํŒจํ„ด ์œผ๋กœ ๊ฐ์ฒด์˜ ์ƒ์„ฑ ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ ํด๋ž˜์Šค/๋ฉ”์„œ๋“œ๋กœ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๊ฐ์ฒด ์ƒ์„ฑ์˜ ๋ณ€ํ™”์— ๋Œ€๋น„ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค.

์ฃผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ Super Class์—์„œ๋Š” Sub Class์—์„œ ์ •ํ™•ํžˆ ์–ด๋–ค ํด๋ž˜์Šค์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ• ์ง€ ์•Œ์ง€ ๋ชปํ•œ๋‹ค.

์ฆ‰, ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ ๋ฐฉ๋ฒ• ํด๋ž˜์Šค๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๋ฆฌ ์ •์˜ํ•ด๋‘” ๋ฉ”์†Œ๋“œ๋ฅผ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด ๋ฐฉ์‹์„ ํ†ตํ•ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค.

Factory Method Pattern์„ ์™œ ์‚ฌ์šฉํ• ๊นŒ?

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

์˜ˆ์ œ

Sub Class์˜ getConnection()์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ Connection ์ข…๋ฅ˜๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•˜๋Š” ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์˜ ์˜ˆ์‹œ์ด๋‹ค.

NUserDao์™€ DUserDao๊ฐ€ Connection์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๋ฏ€๋กœ, ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ 

Last updated