تصف هذه المقالة تنفيذ وظائف غرفة الدردشة متعددة الأشخاص استنادًا إلى الوضع الوسيط. شاركه للرجوع إليه ، على النحو التالي:
تعريف نمط
يستخدم نمط الوسيط كائن الوسيط لتغليف التفاعل بين سلسلة من الكائنات ، بحيث لا يلزم عرض مثيلات الكائنات الأخرى في كل كائن ، وبالتالي تقليل درجة الاقتران بين كل كائن وتغيير علاقة التفاعل بين الكائنات بشكل مستقل.
أمثلة على الوضع الثاني
1 تحليل نمط
نحن نقترض غرف دردشة متعددة الشخصيات لتوضيح هذا النمط
2 وضع الوساطة الرسم التخطيطي فئة ثابتة
3 أمثلة رمز
3.1 الواجهة الوسيطة - imediator
package com.demo.mediator ؛ import com.demo.colleaGue.iuser ؛/** * الواجهة الوسيطة * * Author * */الواجهة العامة imediator {/** * معلومات المستخدم المسجلة * * param user */public void registration (iuser user) ؛ بر3.2 التنفيذ الوسيط - concretemediator
package com.demo.mediator ؛ import java.util.arraylist ؛ import java.util.iterator ؛ import java.util.list ؛ import com.demo.colleaGue.iuser ؛/** * ** finial finial class * * * uthor * */public class concretimed directiiator {private final list <iuser> / ** * معلومات المستخدم المسجلة * * param user */ public void Regist (iuser user) {if (user! = null &&! list.contains (user)) {list.add (user) ؛ }} / *** إرسال رسالة** param user* إرسال رسالة* / public void notifyAllMessage (iuser user) {iterator <Iuser> iterator = list.iterator () ؛ iuser tmpuser = null ؛ بينما (iterator.hasnext ()) {tmpuser = iterator.next () ؛ if (tmpuser! = null &&! tmpuser.equals (user)) {// استبعاد رسالة المرسل tmpuser.receivemessage (user.getMessage ()) ؛ }}}}3.3 واجهة المستخدم - iuser
Package com.demo.colleaGue ؛/** * واجهة المستخدم * * Author * */واجهة عامة iuser {/** * تلقي رسالة * * param message * message */public void reveCeiveSage (رسالة سلسلة) ؛ / *** إرسال رسالة** param message* message*/ public void sendMessage (رسالة سلسلة) ؛ / ** * احصل على محتوى الرسالة المرسلة * * @RETURN */ String Public GetMessage () ؛}3.4 الملخص - الملخص
package com.demo.colleaGue ؛ import com.demo.mediator.imedator ؛/** * معلومات مستخدم مجردة * * Author * */Public Abstract Class AbstractUser تنفذ iuser {// الوسيط المحمي الوسيط Imediator ؛ // اسم السلسلة المحمية ؛ // رسالة السلسلة المحمية بالرسالة ؛ Public AbstractUser (Imedator Mediator ، اسم السلسلة) {this.dediator = mediator ؛ this.name = name ؛ } / *** أرسل رسالة** param message* message* / public void sendMessage (string message) {this.message = message ؛ system.out.println (this.name + "say:" + this.message) ؛ الوسيط. NotifyAllMessage (هذا) ؛ } السلسلة العامة getMessage () {return message ؛ }}3.5 المستخدم A - Usera
package com.demo.colleaGue ؛ import com.demo.mediator.imediator ؛/** * user a * * author * */public class usera extructionuser {public usera (imediator mediator ، string name) {super (mediator ، name) ؛ // سجل في الوسيط. regist (هذا) ؛ } / *** استلام طريقة الرسالة* / public void receivemessage (رسالة السلسلة) {system.out.println ("المستخدم رسالة مستلمة:" + رسالة) ؛ }}3.6 المستخدم ب - userb
package com.demo.colleaGue ؛ import com.demo.mediator.imediator ؛/** * user b * * author * */class public class userb يمتد AbstractUser {public userB (imediator mediator ، string name) {Super (mediator ، name) ؛ // سجل في الوسيط الوسيط. regist (هذا) ؛ } / *** استلام طريقة الرسائل* / public void receivemessage (رسالة سلسلة) {system.out.println ("المستخدم B المستلم رسالة:" + رسالة) ؛ }}3.7 المستخدم ج - USERC
package com.demo.colleaGue ؛ import com.demo.mediator.imediator ؛/** * user c * * author * */public class userc يمتد AbstractUser {public Userc (imediator mediator ، اسم السلسلة) {super (mediator ، name) ؛ // سجل في الوسيط الوسيط. regist (هذا) ؛ } / *** استلام طريقة الرسالة* / public void receivemessage (رسالة سلسلة) {system.out.println ("المستخدم C استلام الرسالة:" + رسالة) ؛ }}3.8 تشغيل غرفة دردشة متعددة اللاعبين
package com.demo ؛ import com.demo.colleaGue.iuser ؛ import com.demo.colleaGue.usera ؛ import com.demo.colleaGue.userB ؛ import com.demo.colleaGue.userc ؛ { / ** * param args * / public static void main (string [] args) {// إنشاء غرفة دردشة (وسيط) imediator الوسيط = جديد concretemediator () ؛ // إنشاء معلومات المستخدم iuser usera = new usera (وسيط ، "Zhang San") ؛ iuser userb = new userB (الوسيط ، "li si") ؛ iuser USERC = جديد USERC (الوسيط ، "وانغ وو") ؛ System.out .println ("========================================================================================================================================== ===================================================================================================================================================================سف ================================================================================================سف ===================================================================================================================================================================سف .println ("===================================================== =============================================================== =============================================================== ================================================================ =============================================================== =============================================================== =============================================================== ================================================================ .println ("===================================================== =============================================================== =============================================================== ================================================================ =============================================================== =============================================================== =============================================================== ================================================================ .4 نتائج التشغيل
=============================================================================
قال تشانغ سان: مرحبًا بالجميع ، اسمي تشانغ سان! أنا جديد معك ، من فضلك اعتني بي!
مستخدم ب استلمه رسالة: مرحبًا بالجميع ، اسمي Zhang San! أنا جديد معك ، من فضلك اعتني بي!
مستخدم C استلامه: مرحبًا بالجميع ، اسمي Zhang San! أنا جديد معك ، من فضلك اعتني بي!
=============================================================================
=============================================================================
قال لي سي: مرحبًا ، اسمي لي سي ، مرحبًا بك للانضمام!
المستخدم رسالة مستلمة: مرحبًا ، اسمي Li Si ، مرحبًا بك للانضمام!
مستخدم C استلامه رسالة: مرحبًا ، اسمي Li Si ، مرحبًا بك للانضمام!
=============================================================================
=============================================================================
قال وانغ وو: أنا وانغ وو ، مرحبًا!
المستخدم رسالة مستلمة: أنا وانغ وو ، مرحبًا!
مستخدم ب استلمه رسالة: أنا وانغ وو ، مرحبًا!
=============================================================================
ثلاثة مبادئ لتصميم هذا النمط
1 يتم تحويل تبعيات الكائنات الفردية إلى تبعيات فردية
2 التحكم المركزي يحسن قابلية إعادة الاستخدام في الفصل
أربع مناسبات الاستخدام
(1) تتصل مجموعة من الأشياء بطريقة محددة جيدًا ولكنها معقدة ، مما يؤدي إلى إرباك ويصعب فهم بنية الترابط. انتبه إلى الترابط بين كائنات متعددة.
(2) تريد تخصيص سلوك موزع في فئات متعددة ، ولكن لا ترغب في إنشاء الكثير من الفئات الفرعية.
(3) يتطلب البحث وتطوير بنية المنتج المزيد من الفرص للتوسع.
خمسة وضع وسيط مخطط فئة ثابتة
لمزيد من المحتوى المتعلق بـ Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "مقدمة والبرمجة التعليمية المتقدمة حول البرمجة الموجهة إلى Java" ، و "البرنامج التعليمي حول بنية بيانات Java" و "خوارزمية" و "ملخص مهارات تشغيل Java" ، و "ملخص مهارات تشغيل Java" و "ملخصات Java Cate".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.