Observer Pattern
Observer Pattern (์ต์๋ฒ ํจํด)
ํด๋์ค A์ B๊ฐ ์๋ก ํต๋ณดํ๊ณ ํต๋ณด๋ฐ๋ ๊ด๊ณ๋ฅผ ๊ฐ์ก๋ค๊ณ ํ์. A๋ B์๊ฒ ํต๋ณดํ๊ธฐ ์ํด B๋ฅผ ์ฐธ์กฐํ๊ณ B๋ A์๊ฒ ํต๋ณด๋ฐ๊ธฐ ์ํด A๋ฅผ ์ฐธ์กฐํ๋ค. ์ด๋ฌํ ์๋ฐฉํฅ ๊ฒฐํฉ์ ๊ฐํ ๊ฒฐํฉ์ ํ์ฑํ๋ค.
์ฌ๊ธฐ์ ํต๋ณด๋ฐ๋ ํด๋์ค B๊ฐ ์๋ก์ด ๋ฒ์ C๋ก ์ ๋ฐ์ดํธ๋๋ค๊ณ ํ์. ๊ทธ๋ฌ๋ฉด A ๋ํ B๊ฐ ์๋ C๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ค. ์ด๋ OCP๋ฅผ ์๋ฐฐํ๋ ๊ฒ์ด๋ค.
๋ํ, ๋ง์ฝ A๊ฐ B์ C์๊ฒ ๋์์ ํต๋ณดํด์ผ ํ๋ค๋ฉด? ๋ ๋ง์ ๊ฐ์ฒด์ ํต๋ณดํ๊ฒ ๋๋ค๋ฉด? ๊ทธ ๋๋ง๋ค A๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๊ณ , ๊ฐ ๊ฐ์ฒด๋ฅผ ์๋ํ์ง ์์ ์ฑ ๊ฐ๊ฐ์ ๊ฒ์ผ๋ก ๋ค๋ฃจ๋ ๊ฒ ๋ํ ๋นํจ์จ์ ์ด๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฐ์ฅ ๋ํ์ ์ธ ํ์ ํจํด
์ด ๋ฐ๋ก Observer Pattern(์ต์๋ฒ ํจํด)
์ด๋ค.
Class Diagram

Subject
- ์์ ์ ๋ณํ๋ฅผ ๊ด์ฐฐ์์๊ฒ ํต๋ณดํ๋ ๊ฐ์ฒด์ด๋ค.Observer
- ๊ด์ฐฐ์๋ก, ์๋ธ์ ํธ์ ๋ณํ๋ฅผ ํต๋ณด๋ฐ๊ณ ๋ณํ๋ฅผ ๋ฐ์ํ๋ค.
โป Observer Pattern์ ์ ์ฉํ ๋์๋ ๊ฐ๊ธ์ ์ฃผ์ด์ง ๋ฉ์๋๋ช
(attach, detach, notify, update ๋ฑ)์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ค๋ฅธ ์ฌ๋์ด ์ฝ๋๋ฅผ ์ฝ์ ๋ Observer Pattern์ ์ ์ฉํ์์ ์๊ธฐ ์ฝ๊ฒ ํ๊ธฐ ์ํจ์ด๋ค.
State Diagram

์ฅ์
์๋ธ์ ํธ๋ ๋จ์ง ๋จ์ผ ์ต์๋ฒ ๋๋ ์ต์๋ฒ์ ๋ฆฌ์คํธ๋ง์ ๊ฐ์ง ๋ฟ ํด๋น ์ต์๋ฒ๊ฐ ๋ฌด์จ ์ต์๋ฒ์ธ์ง๋ ๋ชจ๋ฅธ๋ค. ๋ฐ๋ผ์ ์๋ธ์ ํธ์ ์ต์๋ฒ๋ ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๋ณ๊ฒฝ, ํ์ฅ๋ ์ ์๋ค. (๋์จํ ๊ฒฐํฉ)
Last updated