Observer ํจํด, ๋ง์ด ๋ค์ด๋ดค๋ค. GoF์ ์ ์๋ก ์์๋ณด์.
Observer
- ๊ด์ฐฐ์, ๊ฐ์์
- ๋ณํ๊ฐ ์๊ธฐ๋ฉด ์์์ฑ๋ค.
- ๋ค๋ง ์ด ๊ด์ฐฐ์๋ ์ฌ๋ฌ๋ช ์ผ ์ ์๋ค.
pub-sub Pattern
- Observer๋ณด๋ค ๋ง์ด ์ฐ์ด๋ ํจํด
- ๋ฐํ-๊ตฌ๋ ํจํด
- ๋น์ทํ๋ ์๋ฐํ ๋งํ๋ฉด ๋ค๋ฅธ ํจํด์ด๋ค.
- ํ์ง๋ง ์ด๋ฃจ๋ ค๋ ๋ชฉ์ ์ ๋น์ทํ์ฌ ๊ฐ์ ํจํด์ด๋ผ ๋ณด๋ ์ผ๋ ๋ง๋ค.
- pub-sub์ด ๋ณด๋ค ์ผ๋ฐ์ ์ธ (observer์ ์์ ์งํฉ) ๊ฐ๋ ์ด๋ผ ์๊ฐ
LogManager
- ๋ฐ๋ก ์ ์ ๋ดค๋ LogManager๊ฐ ๊ทธ ํจํด
- program์ด LogManager์๊ฒ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ,
- LogManager๋ ๊ตฌ๋ ์(ConsoleLogger, EmailLogger)๋ค์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋
Observer Pattern์ ์
- ํฌ๋ผ์ฐ๋ํ๋ฉ
- ๋์ด ๋ค์ด์ฌ ๋๋ง๋ค ๋ ๊ฐ์ฒด๋ฅผ ์
๋ฐ์ดํธํ ๊ฒ์
- ์ฅ๋ถ (๊ธ์ก)
- ํฐ์์ ํธ์ ๋
ธํฐ (์ด๋ฆ, ๊ธ์ก)
- ์ค์ ๋ก ํธ์ ์๋ฆผ์ด pub-sub ํจํด์
- ์ด๋ฅผ ์ด๋ฒคํธ ์ฃผ๋ ์ํคํ
์ฒ๋ผ๊ณ ๋ ํ๋ค.
- ์ด๋ฒคํธ๊ฐ ์ผ์ด๋๋ฉด ์๋ ค์ค
IFundingCallback
- ๋์ผํ ์ธํฐํ์ด์ค๋ก ๋ฐ๊ธฐ ์ํด ๋ง๋ฆ
BookkeepingApp
MobileApp
CrowdFundingAccount
pub-sub๊ณผ์ ์ฐจ์ด
- ๋ค๋๋ค์ธ ๊ด๊ณ๋ผ๋ฉด pub-sub์ด๋ผ ํ ์ ์๋ค.
- ์ง๊ธ ์์ ๊ฒฝ์ฐ ๋ฐํ์๊ฐ ํ๋๋ค.
- ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๋ฐํ์๊ฐ ์ฌ๋ฌ๊ฐ๊ฐ ๋ ์ ์๊ณ , ๊ทธ๊ฑธ ๋ฐ๋ ์ชฝ๋ ์ฌ๋ฌ๊ฐ๋ผ๊ณ ํด๋ณด์.
- ์ด๋ด ๊ฒฝ์ฐ ๊ทธ ์ค๊ฐ์ ์กฐ์จํด์ฃผ๋ ๊ฐ์ฒด๊ฐ ์์ด์ผ ํ๋ค.
- ๊ทธ ์ฐจ์ด๊ฐ ์ ๋ถ๋ค. ์๊ฐ์ ๊ฒฝ์ฐ๋ Account์ ์ง์ ์ ์ผ๋ก ๋นจ๋๋ฅผ ๊ฝ๊ณ ์๋ ํํ๋ Observer์ด๋ค.
- pub-sub์ด๋ผ๋ฉด, support()๋ฅผ ํธ์ถํ๋ฉด, ์ค๊ฐ ๊ด๋ฆฌ ๊ฐ์ฒด์ ์์ฒญํ๊ณ , ๊ทธ ๊ฐ์ฒด๊ฐ ๊ตฌ๋
์๋ค์๊ฒ ๋ค์ ์๋ฆผ์ ์ฃผ๋ ํํ๊ฐ ๋ ๊ฒ์ด๋ค.
- iOS์ NotificationCenter์ ๊ฐ์ ๋ฐฉ์์ด๋ค.
Observer Pattern๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฌธ์
- Observer Pattern์ ๊ฒฐ๊ตญ ์ฝ๋ฐฑ ํจ์์ ๋ชฉ๋ก์ด๋ค.
- ๊ทธ๋ฐ๋ฐ ์ด๋ฐ ๋ฐฉ์์ Managed ์ธ์ด์์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ง๋๋ ์ฃผ๋ฒ์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ง์ ๊ด๋ฆฌ
- ๊ฐ๋น์ง ์ปฌ๋ ํฐ ๊ธฐ๋ฐ ์ธ์ด
- ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์์๊ธฐ๋๊ฒ ์๋
- ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅธ ๊ฒ
- funding ๊ฐ์ฒด๊ฐ ํด๋น ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ก๊ณ ์๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์ค์ด๋ผ๊ณ ์๊ฐํจ
subscribers
- ๋ช
์์ ์ผ๋ก
unsubscribe()
์ ๊ฐ์ ๋์์ผ๋ก ๋ฐฐ์ด์์ ๋นผ์ค์ผ ํจ
- ์ด๊ฑฐ ์๊น๋จน์ ์์ ์์?โฆ
- ์ฌ๊ธฐ์ ์ฐพ๊ธฐ๋ ๊ต์ฅํ ์ด๋ ต๋ค..
- Java์ ๊ฒฝ์ฐ์๋ book์ด ์ง์์ง ๋ ์๋์ผ๋ก
unsubscribe()
๋ฅผ ํธ์ถํ๊ฒ ๋ง๋ค๊ธฐ๋ ์ด๋ ต๋ค.- C++์๋
destructor
๋ฅผ ํตํด ์๋ํํ ์ ์๋ค. - Swift
deinit()
- C++์๋
- ๋ C++์ ๊ตณ์ด heap์ ์๋ง๋ค๊ณ stack์ ๋ง๋ค ์๋ ์๋ค.
- ์ด๋ ๊ฒ ๋๋ฉด ํจ์ ์ค์ฝํ ๋ฒ์ด๋๋ฉด ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํด์ ์ํฌ ์ ์๋ค.
- stack์ด ๊ทธ๋ ๊ฒ ๋๋๊น!
- ์ด๋ ๊ฒ ๋๋ฉด ํจ์ ์ค์ฝํ ๋ฒ์ด๋๋ฉด ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํด์ ์ํฌ ์ ์๋ค.