Factory Method Pattern

ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ Super Class์ ์๋ ค์ง์ง ์์ ๊ตฌ์ฒด ํด๋์ค๋ฅผ ์์ฑํ๋ ํจํด์ด๋ฉฐ, ์์ ํด๋์ค๊ฐ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ง๋ฅผ ๊ฒฐ์ ํ๋๋ก ํ๋ ํจํด์ด๊ธฐ๋ ํ๋ค.
์ฆ, ๊ฐ์ฒด ์์ฑ ์ฒ๋ฆฌ๋ฅผ ์๋ธ ํด๋์ค๋ก ๋ถ๋ฆฌ ํด ์ฒ๋ฆฌํ๋๋ก ์บก์ํํ๋ ํจํด ์ผ๋ก ๊ฐ์ฒด์ ์์ฑ ์ฝ๋๋ฅผ ๋ณ๋์ ํด๋์ค/๋ฉ์๋๋ก ๋ถ๋ฆฌํจ์ผ๋ก์จ ๊ฐ์ฒด ์์ฑ์ ๋ณํ์ ๋๋นํ๋ ๋ฐ ์ ์ฉํ๋ค.
์ฃผ๋ก ์ธํฐํ์ด์ค ํ์ ์ผ๋ก ์ค๋ธ์ ํธ๋ฅผ ๋ฐํํ๋ฏ๋ก Super Class์์๋ Sub Class์์ ์ ํํ ์ด๋ค ํด๋์ค์ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค์ด ๋ฐํํ ์ง ์์ง ๋ชปํ๋ค.
์ฆ, ์๋ธ ํด๋์ค์์ ์ค๋ธ์ ํธ ์์ฑ ๋ฐฉ๋ฒ ํด๋์ค๋ฅผ ๊ฒฐ์ ํ ์ ์๋๋ก ๋ฏธ๋ฆฌ ์ ์ํด๋ ๋ฉ์๋๋ฅผ ํฉํ ๋ฆฌ ๋ฉ์๋๋ผ๊ณ ํ๋ฉฐ, ์ด ๋ฐฉ์์ ํตํด ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ด๋ผ๊ณ ํ๋ค.
Factory Method Pattern์ ์ ์ฌ์ฉํ ๊น?
ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ์ฌ์ฉํ๋ ์ด์ ๋ ํด๋์ค๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํ๊ฒ์ ๋๋ค. ๊ฒฐํฉ๋๋ผ๋ ๊ฒ์ ๊ฐ๋จํ ๋งํด ํด๋์ค์ ๋ณ๊ฒฝ์ ์ด ์๊ฒผ์ ๋ ์ผ๋ง๋ ๋ค๋ฅธ ํด๋์ค์๋ ์ํฅ์ ์ฃผ๋๊ฐ์ ๋๋ค. ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํด ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์๋ธ ํด๋์ค์ ์์ํจ์ผ๋ก์จ ๋ณด๋ค ํจ์จ์ ์ธ ์ฝ๋ ์ ์ด๋ฅผ ํ ์ ์๊ณ ์์กด์ฑ์ ์ ๊ฑฐํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฒฐํฉ๋ ๋ํ ๋ฎ์ถ ์ ์์ต๋๋ค.
์์
Sub Class์ getConnection()์ ํตํด ๋ง๋ค์ด์ง Connection ์ข ๋ฅ๊ฐ ๋ฌ๋ผ์ง ์ ์๊ฒ ํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ๋ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ์์์ด๋ค.
NUserDao์ DUserDao๊ฐ Connection์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๋ฏ๋ก, ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ผ๋ก ๋ณผ ์ ์๋ค.
์ฐธ๊ณ
ํ ๋น์ ์คํ๋ง
Last updated