EventAggregator
๊ฐ์
EventAggregator๋ ์ด๋ฒคํธ์ ๊ตฌ๋ (Subscribe)๊ณผ ์ถํ(Publish)์ ๋งค์ปค๋์ฆ์ ๊ฐ์ง๊ณ ์๋ ๊ตฌ์กฐ์์.์ด ํจํด์ ์ฌ์ฉํ๋ฉด ์ด๋ฒคํธ๋ค์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์๋๋ฐฉ์ ์ง์ ์ ์ธ ์ฐธ์กฐ ์์ด ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ค ์ ์์๊บผ์์.
๊ตฌ์กฐ ์์๋ณด๊ธฐ
๋จผ์ ๋ง์ด ์ฌ์ฉํ๋ ๊ตฌ์กฐ๋ฅผ ์์๋ณด๊ธฐ๋ก ํด์. ์ด ํจํด์ ์ด๋ฃจ๋ ์ธ ๊ฐ์ ํด๋์ค์ ์ธํฐํ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ์์ด์. ์์ธํ ์ฌ์ฉ๋ฒ์ ์กฐ๊ธ ํ์ ์์๋ณด๊ธฐ๋ก ํ๊ณ ํ๋์ฉ ์ค๋ช ํด ๋ณผ๊ป์.
IEventAggregator ์ธํฐํ์ด์ค๋
์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๋ Subscribe
๋ฑ๋กํ ์ด๋ฒคํธ๋ฅผ ํด์ง ํ๋ Unsubscribe
๋ฑ๋ก๋ ์ด๋ฒคํธ๋ค์๊ฒ ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌํ๋ Publish ๋ฉ์๋๋ก ์ด๋ฃจ์ด์ ธ์์ด์.
ํ์ ์ ์ฝ์ EventAggregator๋ฅผ ์ฌ์ฉํ๋ ์ด๋ฒคํธ์ ์๋ ์ด๋ฒคํธ๋ฅผ ๋๋๋๋ฐ ์ ์ฉํด์.
์ค์ ํด๋์ค๋ ์์ ๊ฐ์ด ๋ฉํฐ ์ค๋ ๋์ ์์ ํ๋๋ก ๊ตฌํํ์ด์. ConcurrentDictionary๋ ํ์์ ๋ฐ๋ผ ์ด๋ฒคํธ๋ค์ ๊ด๋ฆฌํ๋ List ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์์ด์. ๊ทธ๋ฆฌ๊ณ Aggregator ํด๋์ค๋ ์ฑ๊ธํด ์ธ์คํด์ค๋ก ํ์ฉํ์ด์. ์ด๋ฅผ ํตํด ์ด๋์๋ ํธ์ถ ํ ์ ์๋๋ก ํ์ด์. ๋ง์ง๋ง ํด๋์ค์ ์ฌ์ฉ ํด์ ์์ Dispose๋ฅผ ํตํด Dictionary๋ฅผ ์ด๊ธฐํ ํ์ด์.
์ด๋ฒคํธ ๊ตฌ๋
์ด๋ฒคํธ์ ๊ตฌ๋ ์ ๋จผ์ ๋์์ด ๋๋ ์ด๋ฒคํธ์ ํด๋์ค๋ฅผ ์ ์ํด์ผํด์. ์ ๋ ์ฌ๊ธฐ์์ ์์๋ก ์ด๋ฒคํธ ํด๋์ค์ ๊ทธ ์ด๋ฒคํธ์ arguments๋ฅผ ๋ค๋ฃจ๋ ํด๋์ค๋ฅผ ํ๋ ๋ง๋ค์ด ๋ณผ๊ป์.
๋์์ด ๋ ํด๋์ค์ ์ด๋ฒคํธ๋ฅผ ๋ง๋ค์๋ค๋ฉด, ์ด์ ๊ตฌ๋ ์ ํ ์ฐจ๋ก์์. ๊ตฌ๋ ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ด์.
๋จผ์ ์ด๋ฒคํธ์ ํธ์ถ ๋์ ๋ฉ์๋๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ๋ฉ์๋๋ฅผ Subscribe ํ๋ ์ฝ๋๋ฅผ ์์ฑํด์.
์ด๋ฒคํธ ์ ๋ฌํ๊ธฐ
์ด๋ ๊ฒ ์ด๋ฒคํธ๋ฅผ ์ํ ํด๋์ค๋ฅผ ๋ง๋๋ ์์ ์ด ๋๋๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ก ์ด๋ฒคํธ๋ฅผ publish ํฉ๋๋ค.
Last updated