Factory
Factory๋ ํ๋ฌํฐ์์ ๋ชจ๋ธํด๋์ค๋ฅผ ์ ์ํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ ํค์๋์ด๋ค.
Model Class : ๋ค๋ฃจ๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ ๋ ์ฌ์ฉ๋๋ ํด๋์ค. (๊ฐ์ฒด <-> ๋ฐ์ดํฐ ๋ณํ)
์๋๋ ๊ณต์๋ฌธ์์์ Factory์ ๋ํด ์ค๋ช ํ๋ ๋ฌธ์ฅ์ด๋ค.
Use the factory keyword when implementing a constructor that doesnโt always create a new instance of its class
ํด์ํ์๋ฉด, ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ํญ์ ์์ฑํ์ง ์๋ ์์ฑ์๋ฅผ ๊ตฌํํ ๋ ์ฌ์ฉํ๋ ํค์๋์ด๋ค. ๋ผ๊ณ ์ ํ์๋ค.
์ฌ๊ธฐ์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ํญ์ ์์ฑํ์ง ์๋ ์์ฑ์๋ฅผ ๊ตฌํ
์ด๋ผ๋ ๋ถ๋ถ์ ์ฃผ๋ชฉํด๋ณด์.
์ํํธ์จ์ด ๋์์ธ ํจํด ์ค, ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ํ๊ฐ๋ง ์์ฑํด ์ฌ์ฉํ๋ ํจํด์ด ์๋๋ฐ, ์ด๊ฒ์ ์ฑ๊ธํค ํจํด์ด๋ผ๊ณ ํ๋ค.
์ฆ, Factory๋ฅผ ์์๋ณด๊ธฐ ์ ์ ๋จผ์ ์ฑ๊ธํค ํจํด์ ๋ํด ์ดํดํด์ผํ ํ์๊ฐ ์๋ค.
Singleton
์ฑ๊ธํค ํจํด์ ํ ๋ฌธ์ฅ์ผ๋ก ์์ฝํ์๋ฉด, ํด๋์ค์ ์ธ์คํด์ค๊ฐ ํ๊ฐ๋ง ์กด์ฌํ๋๋ก ํ๋ ํจํด์ ๋งํ๋ค.
์ฌ๋ฌ๋ฒ ์ธ์คํด์ค๋ฅผ ์์ฑํ ํ์๊ฐ ์์ด์ ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ์ด์ ์ด ์์ผ๋ฉฐ, ์ฑ ์ ์ฒด์์ ๋์ผํ ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์๊ธฐ์, ์ค์ ์ด๋ DB ์ธ์คํด์ค ๋ฑ์ ์ฌ์ฉ๋๋ค.
์ ์ฝ๋๋ ์ฑ๊ธํค ํจํด์ ๋ํ ๊ฐ๋จํ ์์ ์ด๋ค. ์ ์ฒด์ ์ธ ์ฝ๋๋ฅผ ์ดํด๋ณด์๋ฉด
static ํค์๋๋ฅผ ์ฌ์ฉํด Singleton์ด๋ผ๋ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์ ์ฅ๋ ๋ณ์์ธ _instance๋ฅผ ์ ์ธํ๋ค.
static : ๊ฐ์ฒด๋ฅผ ์ ์ ์ผ๋ก ์ ์ธํ๊ฒ ๋ค๋ ์๋ฏธ๋ก, ๋ผ์ดํ์ฌ์ดํด๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ณ ์ ๋๋ค.
Singleton._internal() ๋ฅผ ์ฌ์ฉํด private ์์ฑ์๋ฅผ ํธ์ถํด ํด๋์ค ์ธ๋ถ์์ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ์ ์๋๋ก ํ๋ค.
์ธ๋ถ์์๋ private ์์ฑ์๋ก ์ธํด ์์ฑ๋ ์ธ์คํด์ค์ ์ ๊ทผ์ ๊ฐ๋ฅํด์ผ ํ๋ฏ๋ก, getter๋ฅผ ์ฌ์ฉํด ์ธ๋ถ ์ ๊ทผ์ ํ์ฉ์ํจ๋ค.
์ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ ์ฝ๋์ด๋ค.
์์ฑ์๊ฐ ์ฌ๋ฌ๋ฒ ํธ์ถ๋๋๋ผ๋, ์ค์ ๋ก ์์ฑ๋๋ ๊ฐ์ฒด๋ 1๊ฐ์ด๊ณ , ์ต์ด ์์ฑ๋ ์ดํ์ ์์ฑ์๊ฐ ํธ์ถ๋๋ฉด ์ต์ด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํด, ๋ถํ์ํ ์ธ์คํด์ค ์์ฑ์ ๋ฐฉ์งํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์์๋ค๋ ์ฅ์ ์ด ์๋ค.
Factory
Factory ํค์๋ (์ ํํ๊ฒ๋ Factory ์์ฑ์์ด๋ค.) ๋ ์์ฒ๋ผ ์ฑ๊ธํค ํจํด์ ๊ตฌํํ ๋ ์กฐ๊ธ๋ ์์ฝ๊ฒ ํ ์ ์๋๋ก ๋์์ฃผ๋ ํค์๋์ด๋ค. ์ญ์๋ ์์ ์ฝ๋๋ฅผ ํตํด ์ดํด๋ณด์.
์ฑ๊ธํค์ ์ดํด๋ณผ๋ ์์ฑํ ์์ ์ฝ๋๋ฅผ factory๋ฅผ ์ฌ์ฉํด ์ฌ ์์ฑํ ์์์ด๋ค. ๊ธฐ์กด์ getter๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ถ์ด ์ฌ๋ผ์ง๊ณ factory ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ก ๋ณ๊ฒฝ๋์๋ค.
static ํค์๋๋ฅผ ์ฌ์ฉํด Singleton์ด๋ผ๋ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์ ์ฅ๋ ๋ณ์์ธ _instance๋ฅผ ์ ์ธํ๋ค.
Singleton._internal() ๋ฅผ ์ฌ์ฉํด private ์์ฑ์๋ฅผ ํธ์ถํด ํด๋์ค ์ธ๋ถ์์ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ์ ์๋๋ก ํ๋ค.
Factory ์์ฑ์๋ฅผ ์ฌ์ฉํด _instance๋ฅผ ๋ฐํํ๋ค.
Factory๋ ํด๋น ํด๋์ค๊ฐ ๋ฆฌํด ํ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ์์ฑ์ ํจ์์ด๋ค. ๋ฐ๋ผ์, getter๋ฅผ ์ฌ์ฉํด Singleton.instance ์ฒ๋ผ ์ธ๋ถ์์ ๋ช ์์ ์ผ๋ก ์ ๊ทผํ ํ์๊ฐ ์๋ค.
์ฌ๊ธฐ์ ์ฐฉ๊ฐํ๊ธฐ ์ฌ์ด ๋ถ๋ถ์ด ์ฑ๊ธํค ํจํด == Factory๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ธ๋ฐ, Factory๋ ์ฑ๊ธํค ํจํด์ ์์ฝ๊ฒ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ ๋๋ ์์ฑ์์ผ ๋ฟ์ด๋ค.
Last updated