์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- OOP
- 2024-08-21
- Factory Method Pattern
- FACTORY
- ํ๋ IT&E
- http method
- OpenAPI
- 2024-08-20
- datepicker
- swagger
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- ๊ธฐ์ด100์
- menutab
- AndroidStudio
- Android Studio
- URN
- IOC
- ์ฑ์ฉํ์ ํ
- Dialog
- url
- fontstyle
- Kotlin
- Python
- ์ฝ๋์
- uri
- udp
- tcp
- di
- ์ด๋ ธํ ์ด์
- reflection
dingdong coding
Strategy Pattern ๋ณธ๋ฌธ
ํ์์ฑ
๋จผ์ Strategy Pattern์ ์ ์ฌ์ฉํด์ผํ๋์ง์ ๋ํด ์๋ฅผ ๋ค์ด ์์๋ณด๊ฒ ์ต๋๋ค.
๋ก๋ด(Robot) ์ค๊ณ๋์ ๋ฐ๋ผ ์ํฐ(Atom)๊ณผ ํ๊ถ๋ธ์ด(TaekwonV)๋ฅผ ๋ง๋ค์์ต๋๋ค.
ํ๊ถ๋ธ์ด์ ์ํฐ์ ๊ณตํต์ ์ผ๋ก ๊ณต๊ฒฉ๊ณผ ์ด๋ ๊ธฐ๋ฅ์ด ์์ง๋ง ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ก๋ด ํด๋์ค์์ attack์ move๋ฉ์๋๋ฅผ ์ถ์๋ฉ์๋๋ก ์ค์ ํด ์์ ํด๋์ค์์ ์ ์ํ๋๋ก ํ์ต๋๋ค.
๊ณต๊ฒฉ | ์ด๋ | |
ํ๊ถ๋ธ์ด | ๋ฏธ์ฌ์ผ ๊ณต๊ฒฉ | ๊ฑท๊ธฐ |
์ํฐ | ์ฃผ๋จน ๊ณต๊ฒฉ | ํ๋ ๋ ์๋ค๋๊ธฐ |
๊ทธ๋ฌ๋ค ํ๋๋ก ๋ ์๋ค๋๋ ์ํฐ์ด ๊ฐ์๊ธฐ ๊ฑท๊ธฐ๋ง ๊ฐ๋ฅํ๋ค๊ณ ํฉ๋๋ค. ์ํฐ์ move() ๋ฉ์๋๋ฅผ ์์ ํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ์ ์ด ๋ฐ์ํฉ๋๋ค.
์ง์ move( )๋ฉ์๋๋ฅผ ์์ ํ๋ ์์ ์ OCP (Open/Close Principle)์ ์๋ฐฐ๋๋ ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ํฐ์ด ๊ฑท๊ธฐ๋ง ๊ฐ๋ฅํ๊ฒ ๋๋ฉด ํ๊ถ๋ธ์ด์ move()๋ฉ์๋ ๋ด์ฉ์ด ์ค๋ณต๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ค๋ณต๋๋ ์ฝ๋๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
๋ํ ์๋ก์ด ๋ก๋ด์ ์ถ๊ฐ ๊ตฌํํด์ผํ๋ ๊ฒฝ์ฐ, ๊ธฐ์กด ๋ก๋ด๊ณผ ๊ฐ์ ๊ณต๊ฒฉ๋ฐฉ์, ๊ฑท๊ธฐ ๋ฐฉ์์ ๊ฐ๊ณ ์๋ค๋ฉด ๋ ์ค๋ณต๋๋ ์ฝ๋๊ฐ ์์ด๊ณ ์์ ์์๋ OCP๋ฅผ ์๋ฐฐํ๊ฒ ๋ฉ๋๋ค.
์ ๋ฆฌ
• OCP ์๋ฐฐ
• ์์คํ ํ์ฅ ์ ์ค๋ณต๋๋ ์ฝ๋ ๋ฐ์
์ ๊ฐ์ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์์ฃผ ๋ฐ๋๋ ๊ณต๊ฒฉ์ ์ด๋ ๋ฉ์๋๋ฅผ ์บก์ํ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ์ฆ, ์์ฃผ ๋ณํ๋๋ ๊ฒ์ ์ฐพ๊ณ ์ด๋ฅผ ํด๋์ค๋ก ์บก์ํํด์ผ ํฉ๋๋ค.
• OCP(Open-Closed Principle, ๊ฐ๋ฐฉ ํ์ ์์น)
: ํด๋์ค ํ์ฅ์๋ ์ด๋ ค์๊ณ ๋ณ๊ฒฝ์๋ ๋ซํ์์ด์ผํ๋ค.
• ์บก์ํ(encapsulation)
: ๊ธฐ๋ฅ๊ณผ ํน์ฑ์ ๋ชจ์์ "ํด๋์ค"๋ผ๋ "์บก์"์ ๋ถ๋ฅํด์ ๋ฃ๋๊ฒ
: ๊ด๋ จ ์๋ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ํ๋๋ก ๋ฌถ๊ณ ์ ๊ทผ ์ ์ด์๋ฅผ ํตํด ์ธ๋ถ๋ก๋ถํฐ ์ง์ ์ ์ธ ์ ๊ทผ์ ์ฐจ๋จํ๊ณ , ์๋ฃ๋ฅผ ์์ ๋๋ ์กฐ์ ํ ์ ์๋ ๋์์ ๋ด๋ถ์ ๋๋ ๋ฐฉ์
์ด๋ ๊ฒ ์ด๋๊ณผ ๊ณต๊ฒฉ๊ธฐ๋ฅ์ ์บก์ํํ๋ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ๋ฉด ๊ฐ ๋ฉ์๋ ๋ณ๋ก ์๋ก์ด ์ ๋ต(๊ณต๊ฒฉ ๋ฐฉ์, ์ด๋๋ฐฉ์)์ ์์ ๋กญ๊ฒ ์ถ๊ฐ, ์์ ์ด ๊ฐ๋ฅํด์ง๋๋ค.
์ด๋ฌํ ํด๊ฒฐ๋ฐฉ์์ ์ ๋ต ํจํด์ด๋ผ ํฉ๋๋ค.
Strategy Pattern
: ๋ง๊ทธ๋๋ก ์ ๋ต์ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋๋ก ํด์ฃผ๋ ๋์์ธ ํจํด
: ์ ๋ต ํจํด์ด๋ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ฌ ์๋ก ๊ฐ ์ํธ ๊ต์ฒด๊ฐ ๊ฐ๋ฅํ๋๋ก ํ๋ ๋์์ธ ํจํด
: ์๋ก์ด ์๊ณ ๋ฆฌ์ฆ์ด ์ถ๊ฐ๋์ด๋ ๊ธฐ์กด์ ์ฝ๋๋ฅผ ์์ ํ ํ์๊ฐ ์์ด ์ฝ๊ฒ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํด์ง๋ค. => OCP ๋ง์กฑ
: ํ๋ก๊ทธ๋จ์์ ์ฝ๊ฒ ์ ๋ต์ ๋ฐ๊ฟ์ผํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋ง์ด ๋ฐ์ํ ๋ ์ฌ์ฉ
• ๊ฐ์ฒด๊ฐ ํ ์ ์๋ ํ์๋ค์ ๊ฐ๊ฐ์ ์ ๋ต์ผ๋ก ๋ง๋ค์ด ๋๊ณ ๋์ ์ผ๋ก ํ์์ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ ์ ๋ต์ ๋ฐ๊พธ๋ ๊ฒ๋ง์ผ๋ก ํ์์ ์์ ์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ ํจํด
์ ๋ต์ ๋ชฉ์ ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ผ์ ์ํํ๋ ๋ฐฉ์, ๋น์ฆ๋์ค ๊ท์น, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ด ๋ ์ ์๋ค.
• Strategy: ์ธํฐํ์ด์ค๋ ์ถ์ํด๋์ค๋ก ์ธ๋ถ์์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ช ์ํ๋ค.
• ConcreteStrategy1, ConcreteStrategy2, ConcreteStrategy3 : ์คํธ๋ํฐ์ง ํจํด์์ ๋ช ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ค์ ๋ก ๊ตฌํํ ํด๋์ค
• Context: ์คํธ๋ํฐ์ง ํจํด์ ์ด์ฉํ๋ ์ญํ ์ ์ํ, ํ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๊ตฌ์ฒด์ ์ธ ์ ๋ต์ ๋ฐ๊ฟ ์ ์๋๋ก setter๋ฉ์๋ ์ ๊ณต
์ ์ธ์, ์ฑํ์ JAVA ๊ฐ์ฒด ์งํฅ ๋์์ธ ํจํด, ํ๋น๋ฏธ๋์ด
'๐ฐJAVA > Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Factory Method Pattern (0) | 2022.07.05 |
---|---|
Singleton Pattern (0) | 2022.06.21 |
[ Object-Oriented Programming ] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.01.24 |