تخطَّ إلى المحتوى

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 الكامل بالعربي.