์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- di
- FACTORY
- ํ๋ IT&E
- Android Studio
- datepicker
- Python
- Kotlin
- fontstyle
- tcp
- url
- OpenAPI
- URN
- 2024-08-21
- IOC
- ๊ธฐ์ด100์
- AndroidStudio
- ์ฝ๋์
- OOP
- reflection
- udp
- Factory Method Pattern
- ์ด๋ ธํ ์ด์
- uri
- Dialog
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- 2024-08-20
- swagger
- http method
- menutab
- ์ฑ์ฉํ์ ํ
dingdong coding
Factory Method Pattern ๋ณธ๋ฌธ
ํ์์ฑ
๋จผ์ Factory Method Pattern ํจํด์ ์ ์ฌ์ฉํด์ผํ๋์ง์ ๋ํด ์์๋ด ์๋ค.
ํ๋ก๊ทธ๋จ์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ํฉ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ๋ํ ๊ธฐ๋ฅ์ ๊ตฌํ์ ๊ฐ๋ณ ํด๋์ค๋ฅผ ํตํด ์ ๊ณตํ๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค. ๋๋ฌธ์ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ์ด๋ ์ํฉ์ ๋ฐ๋ฅธ ๊ธฐ๋ฅ ์ ํ์ ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋์ ๋ณ๊ฒฝ์ ์ด๋ํฉ๋๋ค.
๋ํ ์ ์ ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋๋ ์์ฃผ ์ค๋ณต๋ ์๋ ์์ต๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋๋ฅผ ์ถ์ํํด ํ ๊ณณ์์ ๊ด๋ฆฌํ์ง ์์ผ๋ฉด ๋ณํ๊ฐ ๋ฐ์ ํ์ ์ ํด๋น ํด๋ผ์ด์ธํธ์ ์ฝ๋๋ฅผ ์ ๋ถ ์์ ํด์ฃผ์ด์ผํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ณต์ฅ์ด ํ์ํ ๊น์?
Factory Pattern
Factory์ ๋ป์ ๊ณต์ฅ์ผ๋ก ์ฌ๊ธฐ์๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ณต์ฅ(๋ชจ๋)์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด ์์ฑ์ ์บก์ํ ํ๋ ๊ฒ์ ํฉํ ๋ฆฌ ํจํด์ ๋๋ค.
์ฆ, ํฉํ ๋ฆฌ๋ ์ธ์คํด์คํ ๋ก์ง์ ํด๋ผ์ด์ธํธ์ ๋ ธ์ถ์ํค์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค.
• ํฉํ ๋ฆฌ ํจํด
: ๊ตฌ์ฒด์ ์ธ ๊ฐ์ฒด ์์ฑ๊ณผ์ ์ ํฉํ ๋ฆฌ๋ก ๋ชจ๋ํ ํ์ฌ ๊ตฌ์ฒด์ ์ธ ๋ถ๋ถ์ด ์๋ ์ถ์์ ์ธ ๋ถ๋ถ์ ์์กดํ ์์๋๋ก ํ๋ ๊ฒ
: ์ฆ, ๊ฐ์ฒด์ ์์ฑ์ฝ๋๋ฅผ ๋ณ๋์ ํด๋์ค / ๋ฉ์๋๋ก ๋ถ๋ฆฌ ํ๋ ๊ฒ
: ํฉํ ๋ฆฌ ํจํด ์ข ๋ฅ 1) ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด 2) ์ถ์ ํฉํ ๋ฆฌ ํจํด
๊ฐ์ฒด ์์ฑ ์ฝ๋๋ฅผ ๋ณ๋์ ํด๋์ค/๋ฉ์๋๋ก ๋ถ๋ฆฌํด ์ฌ์ฉํ๋ค๋ฉด ํด๋น ํด๋์ค/๋ฉ์๋๋ง ๋ณ๊ฒฝํจ์ผ๋ก์จ ๊ฐ์ฒด ์์ฑ๋ฐฉ์์ ๋ณํ์ ํจ๊ณผ์ ์ผ๋ก ๋์ํ ์ ์์ต๋๋ค. ์ฆ, OCP์ ์์น์ ๋ฐ๋ผ ๊ฐ์ฒด ์์ฑ์ ๋ด๋นํ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ํ ๊ณณ์์ ๊ด๋ฆฌํด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
1์ฐจ์ ์ผ๋ก๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋์ ์ค๋ณต์ ํผํ ์ ์์ต๋๋ค. ๋๋ถ์ด ํฉํ ๋ฆฌ ํจํด๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํด ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๊ณ , ๊ฐ์ฒด์ ์์ฑ์ ๋ํ ์ฑ ์์ ์๋ธ ํด๋์ค์ ์์ํจ์ผ๋ก์จ ๋ณด๋ค ํจ์จ์ ์ธ ์ฝ๋์ ์ด๋ฅผ ํ ์ ์๊ณ ์์กด์ฑ์ ์ ๊ฑฐํฉ๋๋ค. ๋ํ ๊ฐ์ฒด ์์ฑ์ ๋ณํ์ ํจ๊ณผ์ ์ผ๋ก ๋๋นํ ์ ์์ต๋๋ค.
• ๊ฒฐํฉ๋(Coupling)
: ๋ชจ๋ ๊ฐ ์ํธ ์์กดํ๋ ์ ๋ ๋๋ ๋ ๋ชจ๋ ์ฌ์ด์ ์ฐ๊ด๊ด๊ณ
: ๊ฒฐํฉ๋๊ฐ ์ฝํ ์๋ก ๋ชจ๋์ ๋ ๋ฆฝ์ฑ์ ๋์์ง๋ค.
: ๋ค๋ฅธ ๋ชจ๋์ ๋ผ์น๋ ์ํฅ์ด ์ ์ด์ง๊ณ ์ ์ง๋ณด์์ฑ์ด ์ข์์ง๋ฏ๋ก ๋ ๋ฆฝ์ฑ์ด ๋์ ๋ชจ๋์ผ์๋ก ์ข์ต๋๋ค.
Factory Method Pattern
: ๊ฐ์ฒด ์์ฑ์ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ์ง๋ง ์ด๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ง๋ ์์ํด๋์ค๊ฐ ๊ฒฐ์ ํ๋๋ก ํ๋ ํจํด
: ์์์ ์ฌ์ฉํ์ฌ ํ์ ํด๋์ค ๋๋ ์๋ธ ํด๋์ค๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
: ํด๋ผ์ด์ธํธ๊ฐ ๋ฐํ์์ ์์ฑํด์ผํ๋ ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ฅผ ์์ง ๋ชปํ์ง๋ง ์์ ์ ์ํํ ํด๋์ค๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ ๋ ์ฌ์ฉ
• ๊ฐ์ฒด ์์ฑ ์ ๋ด ํด๋์ค ๋์ ํ์ ํด๋์ค์์ ์ ํฉํ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ
• Product : Factory ๋ฉ์๋๊ฐ ์์ฑํ๋ ์ค๋ธ์ ํธ์ ์ธํฐํ์ด์ค ์ ์
• ConcreteProduct : Product ์ธํฐํ์ด์ค ๊ตฌํ
• Creator : Factory ๋ฉ์๋ ์ ์ธ
• ConcreteCreator : Factory ๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ ConcreteProduct์ ์ธ์คํด์ค๋ฅผ ๋ฐํ
Abstract Factory Pattern
: ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์๊ณ ๊ด๋ จ ๊ฐ์ฒด ํจ๋ฐ๋ฆฌ๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ธํฐํ์ด์ค ์ ๊ณต
: ์ปดํฌ์ง์ ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์์ฑ ์ฑ ์์ ๋ค๋ฅธ ํด๋์ค์ ์์
: ์์คํ ์ด ์ฌ๋ฌ ์ ํ ๊ตฐ์ ์์ฑํด์ผํ๊ฑฐ๋ ๊ตฌํ ์ธ๋ถ์ฌํญ์ ๋ ธ์ถํ์ง ์๊ณ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ค๋ ๊ฒฝ์ฐ ์ฌ์ฉ
ํ์ต์ ๋ง์ ๋์์ด ๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ต๋๋ค. ๐
์ฐธ์กฐ ๋ฐ ์ถ์ฒ
[java] ๋์์ธ ํจํด : ํฉํ ๋ฆฌ vs ํฉํ ๋ฆฌ ๋ฉ์๋ vs ์ถ์ ํฉํ ๋ฆฌ
'๐ฐJAVA > Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Strategy Pattern (0) | 2022.07.06 |
---|---|
Singleton Pattern (0) | 2022.06.21 |
[ Object-Oriented Programming ] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.01.24 |