728x90
๊ฐ์ฒด์ ํ์๋ฅผ ํด๋์ค๋ฅผ ํตํด ์บก์ํํ์ฌ ๋์ ์ผ๋ก ํ์๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ฒ ํด์ฃผ๋ ํจํด
์ฅ์ :
- ์ฝ๋์ ์ ์ฐ์ฑ : ์๋ก ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฝ๊ฒ ๊ต์ฒดํ ์ ์์ผ๋ฏ๋ก, ์ฝ๋์ ์ ์ฐ์ฑ ๋์์ง
- ์ฌ์ฌ์ฉ์ฑ : ํน์ ํ๋(์ ๋ต)์ ๋ณ๋์ ํด๋์ค๋ก ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ฌ๋ฌ ๊ฐ์ฒด์์ ์ฌ์ฌ์ฉ
- ๋ฐํ์์์ ์ ๋ต ์ ํ : ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ(์ ๋ต)์ ๊ตฌํ ๊ฐ๋ฅ, ์ด๋ฅผ ๋ฐํ์์ ์ ํํ๊ฑฐ๋ ๊ต์ฒด
๋จ์ :
- ํด๋์ค ์ ์ฆ๊ฐ : ํด๋์ค๋ก ๋ถ๋ฆฌํ์ฌ ํด๋์ค์ ์ ์ฆ๊ฐํจ. ์ด๋ก์ธํด ์ฝ๋ ๋ณต์กํด์ง
- ํด๋ผ์ด์ธํธ ์ฝ๋์ ๋ณต์ก์ฑ : ๊ฐ์ฒด ์์ฑ ๋ฐ ๊ด๋ฆฌ ๋ก์ง ์ถ๊ฐ๋จ
- ์์กด์ฑ ์ฆ๊ฐ : ์๋ชป ์ค๊ณ ์ ์ ์ง๋ณด์ ์ด๋ ค์
์์ ์ฝ๋
# ์ ๋ต
class MusicStrategy:
def recommend_song(self):
pass
# ๋ฐ๋ผ๋
class Ballad(MusicStrategy):
def recommend_song(self):
return "Recommended Song: Ballad"
# ํํฉ
class HipHop(MusicStrategy):
def recommend_song(self):
return "Recommended Song: HipHop"
# ์ปจํ
์คํธ ํด๋์ค
class User:
def __init__(self, strategy: MusicStrategy):
self._strategy = strategy
def recommend(self):
return self._strategy.recommend_song()
user1 = User(Ballad())
print(user1.recommend()) # ๋ฐ๋ผ๋ ์ถ์ฒ
user2 = User(HipHop())
print(user2.recommend()) # ํํฉ ์ถ์ฒ
728x90
'๐๏ธ ์คํฐ๋ ํ๋ > ๐ ๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ง๋ฌด๋ฆฌ] ์น ์ํ๊ด๋ฆฌ์ ์ธ์ฆ (0) | 2024.10.10 |
---|---|
[๋ง๋ฌด๋ฆฌ] ์น ํต์ ๊ธฐ์ด (1) | 2024.10.09 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ์ค๋ ๋ (0) | 2024.09.18 |
[๋คํธ์ํฌ] HTTP (1) | 2024.09.12 |
[๋์์ธํจํด] MVVM ํจํด (0) | 2024.09.09 |