๐ ๋ชฉ์ฐจ
- Introduction
- What's Mediator Pattern?
- Implementation
- Conclusion
- Reference
๐ Introduction
์๋
ํ์ธ์. ์ด๋ฒ ํฌ์คํ
์์๋ ์ค์ฌ์ ํจํด
์ ๋ํด ๋ฐฐ์๋ณด๊ฒ ์ต๋๋ค.
๐ What's Mediator Pattern?
์ค์ฌ์ ํจํด์ผ๋ก Messenger Class๋ฅผ ๊ตฌํ ํด๋ณผ ํ ๋ฐ์. ์ค์ฌ์ ํจํด์ ๋ค์ ๋ํ๊ณผ ๊ฐ์ต๋๋ค.
Message๋ฅผ ๊ฐ๊ฐ์ participants์๊ฒ ๋ฟ๋ ค์ฃผ๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ์์ ์ผ๋จ ๋๋ช ๋ง ๋ฑ๋ก์ ํ๋ ๊ฒ์ผ๋ก ๊ฐ์ ์ ํ๊ณ ์ด๋ป๊ฒ ๊ตฌํ์ด ๋๋์ง๋ฅผ ๋ณด์ฌ๋๋ฆฌ๊ณ์ต๋๋ค.
๐ Implementation
์ผ๋จ ์ค์ฌ์ ํจํด์ผ๋ก ์ด Messenger๋ ์ด๋ ๊ฒ ์๊ฒผ์ต๋๋ค.
class Messenger {
constructor() {
this.participants = [];
}
register(participant) {
this.participants.push(participant);
return this;
}
deliver(sender, message) {
this.participants.forEach((participant) => {
if (participant !== sender) {
console.log(`From ${sender}:\n Dear ${participant}.\n ${message}`);
}
});
return this;
}
}
์ฒ์๋จผ์ participant
๋ฅผ ๋ฑ๋ก์ ํ๊ณ ๊ทธ๋ค์ participant์๊ฒ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ๋ณด๋ธ ์ฌ๋์ ์ ์ธํ ๋ชจ๋ ์ด์๊ฒ messege๊ฐ ๊ฐ๋ ๊ตฌ์กฐ์
๋๋ค.
const EDDIE = "eddie";
const CLARIE = "claire";
const messenger = new Messenger();
messenger.register(EDDIE);
messenger.register(CLARIE);
messenger.deliver(EDDIE, "Whut ssup");
//From eddie:
// Dear claire.
// Whut ssup
๐ Conclusion
์ค์ฌ์ ํจํด์ ์ผํ ์ต์ ๋ฒ ํจํด์ด๋ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ๋ ๋์์ธ ํจํด์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์ค์์์ ์ปจํธ๋กค ํ๋ ์ญํ ์ด ์๋๊ฐ ์๋๊ฐ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ค์ฌ์ ํจํด์ด ๋ง์ด ์ฌ์ฉํ๋ ๊ณณ์ ์ฑํ , ์์ ๋ถ๋ฐฐ๊ธฐ, ๊ฐ๊ณ๋ถ ๊ฐ์ ๊ฒ์ ๋ง์ด ์ฌ์ฉ๋๋ค๊ณ ํ๋ค์. ๊ทธ๋ผ ๋ค์์ ๋๋ณด์์ ~~
๐ Reference
'Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Higher Order Component Pattern (with React) (0) | 2022.01.21 |
---|---|
Mixin Pattern (0) | 2022.01.20 |
Observer Pattern (0) | 2020.10.19 |
Module Pattern (0) | 2020.10.07 |
Singleton Pattern (0) | 2020.10.05 |