Observer
Observer ํจํด์ ํ ๊ฐ์ฒด(Subject)์ ์ํ ๋ณํ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ฒด(Observer)๋ค์ด ์๋์ผ๋ก ๊ฐฑ์ ๋๋๋ก ํ๋ 1:N ๊ด๊ณ๋ฅผ ๊ตฌ์ฑํ๋ ๋์์ธ ํจํด์ ๋๋ค.
์ฆ, Subject์ Observer ๊ฐ์ ๋์จํ ๊ฒฐํฉ(loose coupling)์ ํตํด, ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์์ ๋ ์๋ ํด๋์ค์ ์ง์ ์์กดํ์ง ์๊ณ Observer๋ค์๊ฒ ๋ณ๊ฒฝ ์ฌ์ค์ ์๋ ค์ค ์ ์์ต๋๋ค.
How do code ?
Subject (Observable ๊ฐ์ฒด)
Observer๋ฅผ ๋ฑ๋ก(attach)ํ๊ฑฐ๋ ํด์ (detach)ํ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ , ์ํ ๋ณ๊ฒฝ ์ ๋ชจ๋ Observer๋ค์๊ฒ ์๋ฆฌ๋ ์ญํ ์ ํฉ๋๋ค.
๋ด๋ถ ์ํ(์: ๋ฉ์์ง)๊ฐ ๋ณ๊ฒฝ๋๋ฉด
notifyObservers()
๋ฅผ ํธ์ถํ์ฌ ๋ฑ๋ก๋ Observer๋ค์๊ฒ ๋ณ๊ฒฝ ๋ด์ฉ์ ์ ๋ฌํฉ๋๋ค.
Observer
Subject๋ก๋ถํฐ ์ํ ๋ณ๊ฒฝ์ ํต๋ณด๋ฐ๊ธฐ ์ํ
update()
๋ฉ์๋๋ฅผ ์ ์ํฉ๋๋ค.๊ฐ๊ฐ์ ConcreteObserver๋ ์ด ๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ ์์ ๋ง์ ๋ฐฉ์์ผ๋ก ์ํ ๋ณ๊ฒฝ์ ๋์ํฉ๋๋ค.
์ฅ์
Subject์ Observer ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฐ, ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅ ๋ฐ ์์ ํ ์ ์์ต๋๋ค.
ํ ๊ฐ์ฒด์ ์ํ ๋ณ๊ฒฝ์ด ์ฌ๋ฌ ๊ฐ์ฒด์ ์๋์ผ๋ก ๋ฐ์๋๋ฏ๋ก, ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ฝ์ต๋๋ค.
Last updated