<aside>

</aside>


๐ŸŒŸ ์ฑ•ํ„ฐ ์†Œ๊ฐœ

์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„! ๐Ÿ˜Š ์˜ค๋Š˜์€ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋“ค์ด ์„œ๋กœ ๋ณต์žกํ•˜๊ฒŒ ์–ฝํ˜€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ƒํ™ฉ์„ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด์ฃผ๋Š” **์ค‘์žฌ์ž ํŒจํ„ด(Mediator Pattern)**์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

๋‹จ์ฒด ์ฑ„ํŒ…๋ฐฉ์ด ์—†๋‹ค๋ฉด, ๋ชจ๋“  ์นœ๊ตฌ์—๊ฒŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๊ฒ ์ฃ ? ๐Ÿคฏ ์ค‘์žฌ์ž ํŒจํ„ด์€ ์ด์ฒ˜๋Ÿผ ๋‹ค์ˆ˜์˜ ๊ฐ์ฒด(Colleagues)๋“ค์ด ์„œ๋กœ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š” ๋Œ€์‹ , ์ค‘์•™์˜ '์ค‘์žฌ์ž(Mediator)' ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ํ–‰๋™ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋งˆ์น˜ ๋ณต์žกํ•œ ๊ต์ฐจ๋กœ์˜ ๊ตํ†ต์ •๋ฆฌ ๊ฒฝ์ฐฐ๊ด€์ฒ˜๋Ÿผ์š”. ๊ฐ์ฒด๋“ค ์‚ฌ์ด์˜ ๋ณต์žกํ•œ ํ†ต์‹  ํ๋ฆ„์„ ์–ด๋–ป๊ฒŒ ๋‹จ์ˆœํ™”ํ•˜๋Š”์ง€ ํ•จ๊ป˜ ์•Œ์•„๋ด…์‹œ๋‹ค! โœจ


๐ŸŽฏ ์ฑ•ํ„ฐ ๋ชฉํ‘œ

์ด๋ฒˆ ๊ฐ•์˜์˜ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.

  1. ์ค‘์žฌ์ž ํŒจํ„ด์˜ ์˜๋„(๊ฐ์ฒด ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์บก์Аํ™”ํ•˜์—ฌ ์ง์ ‘์ ์ธ ์ฐธ์กฐ๋ฅผ ์ค„์ด๊ณ  ๋А์Šจํ•œ ๊ฒฐํ•ฉ์„ ์ด‰์ง„)๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ด ํŒจํ„ด์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ(๋ณต์žกํ•œ ๋‹ค๋Œ€๋‹ค ์˜์กด์„ฑ, ๋‚ฎ์€ ์žฌ์‚ฌ์šฉ์„ฑ)๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ฃผ์š” ์ฐธ์—ฌ์ž(Mediator, ConcreteMediator, Colleague, ConcreteColleague)์™€ ๊ฐ์ž์˜ ์—ญํ• ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  4. ์ค‘์žฌ์ž ํŒจํ„ด์ด ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉ ๋กœ์ง์„ ์ค‘์•™ ์ง‘์ค‘ํ™”ํ•˜๊ณ  ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. Python์—์„œ ์ค‘์žฌ์ž ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ํŒจํ„ด์˜ ์ด์ (๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ, ์ œ์–ด ๋กœ์ง ์ง‘์ค‘)๊ณผ ๋‹จ์ (Mediator ๋ณต์žก์„ฑ ์ฆ๊ฐ€)์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ๊ฐ•์˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ „์ฒด ์ฝ”๋“œ ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

์ฑ„ํŒ…๋ฐฉ(Chat Room) ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด, ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž(Colleagues)๊ฐ€ ์ฑ„ํŒ…๋ฐฉ(Mediator)์„ ํ†ตํ•ด์„œ๋งŒ ์„œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฝ”๋“œ๋Š” mediator_example.py ํŒŒ์ผ ํ•˜๋‚˜์— ๋‹ด๊ฒ ์Šต๋‹ˆ๋‹ค.