GoF์ ๋์์ธ ํจํด, ๊ฐ์์ ํจํด์ ๋ํด ์์๋ณธ๋ค.
ํต์ฌ ์์ฝ
๊ฐ์ฒด ์ฌ์ด์ ์ผ ๋ ๋ค ์์กด ๊ด๊ณ๋ฅผ ์ ์ํด๋์ด, ์ด๋ค ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณํ ๋, ๊ทธ ๊ฐ์ฒด์ ์์กด์ฑ์ ๊ฐ์ง ๋ค๋ฅธ ๊ฐ์ฒด๋ค์ด ๋ณํ๋ฅผ ํต์ง๋ฐ๊ณ ์๋์ผ๋ก ๊ฐฑ์ ๋ ์ ์๊ฒ ๋ง๋ ๋ค.
- ์ข ์์, ๊ฒ์-๊ตฌ๋ (Publish-Subscribe)๋ผ ๋ถ๋ฆฐ๋ค.
- swift index์ด ์ด ํํ๋ผ ์๊ฐํ๋ฉด ๋๋ค.
- 03. Notification To Combine ์์ ์ฌ์ฉํ๋ Notification๋ ๊ฐ์ ํํ๋ค.
์์
Code
์ฃผ์ฌ์ ๋์ง 4
์์๊ฐ ์ด๊น!
์ฃผ์ฌ์ ๋์ง 6
์์๊ฐ ์ด๊น!
์ฃผ์ฌ์ ๋์ง 5
์ต์์๊ฐ ์ด๊น!
์์์ด๊ฐ ์ด๊น!
์ฃผ์ฌ์ ๋์ง 2
์์๊ฐ ์ด๊น!
์ฃผ์ฌ์ ๋์ง 5
์ต์์๊ฐ ์ด๊น!
์์์ด๊ฐ ์ด๊น!
ํ์ฉ์ฑ
- ์ด๋ค ์ถ์ ๊ฐ๋ ์ด ๋ ๊ฐ์ง ์์์ ๊ฐ๊ณ , ํ๋๊ฐ ๋ค๋ฅธ ํ๋์ ์ข ์์ ์ผ ๋.
- ํ ๊ฐ์ฒด์ ๊ฐํด์ง ๋ณ๊ฒฝ์ผ๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๊ณ , ํ๋ก๊ทธ๋๋จธ๋ค์ ์ผ๋ง๋ ๋ง์ ๊ฐ์ฒด๋ค์ด ๋ณ๊ฒฝ๋์ด์ผ ํ๋์ง ๋ชฐ๋ผ๋ ๋๋ ๊ฒฝ์ฐ.
์ฐธ์ฌ์
- Subject(
DiceGame
)- ๊ฐ์์๋ค์ ์๊ณ ์๋ ์ฃผ์ฒด.
- ๊ฐ์์๋ค์ ๋ถ์ผ ์ ์๋ ์ธํฐํ์ด์ค๊ฐ ์ ์๋์ด์ผ ํจ
- Observer(
Player
)- ์ฃผ์ฒด์ ๋ณํ๋ฅผ ๊ด์ฌ์์ด ํ๋ ์น๊ตฌ๋ค์๊ฒ ํ์ํ ์ธํฐํ์ด์ค ์ ์
- ConcreteSubject(
FairDiceGame
) - ConcreteObserver(
OddBettingPlayer
,EvenBettingPlayer
)
์๊ฐํด๋ณผ ์
- Subject์ Observer ํด๋์ค ๊ฐ์๋ ์ถ์์ ์ธ ๊ฒฐํฉ๋ง์ด ์กด์ฌํ๋ค.
- ์ธํฐํ์ด์ค๋ก๋ง ์ฝํ์์ ๋ฟ์ด๋ค.
- Broadcast ๋ฐฉ์์ ๊ต๋ฅ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- ์ด ํจํด์์ ์ฃผ์ฒด์๋ ๊ตฌ์ฒด์ ์ธ ์์ ์๋ฅผ ์ ํ์๊ฐ ์๋ค.
- ๊ทธ๋ฅ ๋ฑ๋ก๋์ ํํ ๋ค ๋ฟ๋ฆฌ๊ณ ๋์ด๋ค.
- ๋ฐ๋์ชฝ์์ ๋ฌด์ํ ์ง ๋ฐ์์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
- ์์ธกํ์ง ๋ชปํ ์ ๋ณด๋ฅผ ๊ฐฑ์ ํ ์ ์๋ค.
- ๊ฐ์์๋ค๋ผ๋ฆฌ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ํ์.
- ์ ๋ณด ๊ฐฑ์ ์์ฒด์ ๋น์ฉ์ด ํฐ ์ํฉ์ผ ๋, ํ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ฃผ์ฒด๋ค์ ํ์ ๊ฐ์์๋ค์๊ฒ ๋ ์์ ์ ๊ฐํ๊ฒ ํ ์ ์๋ค.
- ์ด ์์ ์ ๋ถํ์ํ ์๋ ์๊ณ , ๋ด๊ฐ ์ํ๋ ์ ๋ณด๊ฐ ์๋ ์๋ ์๋ค.
- ์ฆ, ๋ณ๊ฒฝ์ ์ด์ ์ ๋ํ ๊ฒ์ ์ ์ถํ๋ ๊ฒ์ด ์ด๋ ต๋ค.