Mediator
نمط الوسيط Mediator
Mediator يحدد كائنًا وسيطًا يغلّف كيفية تواصل مجموعة كائنات (Colleagues) مع بعضها، بحيث تتواصل عبره فقط بدل الإشارة لبعضها مباشرة.
بدون Mediator، مجموعة كائنات تتواصل مباشرة قد تنتج حتى N×(N-1) رابط محتمل بينها — تعقيد يتزايد بسرعة. الـ Mediator يستبدل هذه الشبكة بمرجع واحد لكل كائن (الوسيط نفسه)، والوسيط هو من يقرر كيف تتفاعل الكائنات. أمثلة واقعية: برج المراقبة الجوي بين الطيارين، غرفة دردشة بين المستخدمين.
الصياغة
colleague.send(message); // يمرّرها عبر mediator.notify() mediator.notify(sender, event);
📄 مثال
class ChatRoom {
#users = [];
register(user) { user.room = this; this.#users.push(user); }
send(text, from) {
this.#users.forEach((u) => u !== from && u.receive(text, from));
}
}
class User {
constructor(name) { this.name = name; }
send(text) { this.room.send(text, this); }
receive(text, from) { console.log(`${from.name} → ${this.name}: ${text}`); }
}
const room = new ChatRoom();
const sara = new User("سارة"), omar = new User("عمر");
room.register(sara); room.register(omar);
sara.send("أهلاً!"); // سارة → عمر: أهلاً!أهم النقاط
| النقطة | الوظيفة |
|---|---|
| التصنيف | نمط سلوكي (Behavioral) |
| يحل مشكلة | شبكة ترابط مباشر معقدة بين عدة كائنات (N×(N-1) رابط محتمل) |
| خطر شائع | الوسيط قد يتحول إلى God Object إذا حُمِّل كل منطق التطبيق |
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار OOP الكامل بالعربي.