تصف هذه المقالة وضع مستمع نمط تصميم جافا. شاركه للرجوع إليه ، على النحو التالي:
يحتوي وضع المستمع على ثلاثة عناصر - مصدر الحدث وكائن الحدث والمستمع.
مصدر الحدث: كما يوحي الاسم ، فإن مصدر الحدث ، مثل الزر الذي تم النقر عليه ، ينتمي إلى الكائن الذي يتم الاستماع إليه ؛
كائن الحدث: غالبًا ما يتم الخلط بين هذا مع مصدر الحدث. غالبًا ما يتم استخدامه لحزم مصدر الحدث. تذكر أنه حدث بعد كل شيء ، مثل النقر فوق الأحداث. يختلف الفرق بين مصدر الحدث عن مصدر الحدث. لا توجد طريقة للشعور بها ؛
المستمع: هذا هو جوهر وضع المستمع ، والذي يحدد الإجراءات بعد حدوث حدث. عادة ، يتم إدخال كائن الحدث كمعلمة كدالة محددة في المستمع.
هنا كستناء بسيط:
خلفية القصة هي أن شياو مينغ طفل غير صحي. والدته قلقة للغاية بشأن صحته وتنص على أنه يجب غسل يديها قبل الوجبات.
تحديد طفل شقي. الأطفال المشاغبون هم الأشياء التي يجب مراقبتها ، ومصدر الأحداث ، ويتم إرسال جميع الأحداث من قبل مصدر الأحداث ، والتي يبدو أنها هراء.
الطبقة العامة {اسم السلسلة الخاصة ؛ reledListener PrivateListener الطفل العام (اسم السلسلة) {this.name = name ؛ } public void eat () {if (null! = allingListener) {reledListener.Remind (new armindwashinghandsevent (this)) ؛ } system.out.println ("الطفل أكل ...") ؛ } public void addListener (delflistener beasher) {reledListener = leader ؛ }}التالي هو النظر إلى كائن الحدث ، والذي ، كما ذكر أعلاه ، يلف مصدر الحدث. هنا نحدد حدث غسل اليدين قبل الوجبة.
الطبقة العامة تذكّر {الطفل الخاص الطفل ؛ تذكرات shartwashinghandsevent (طفل الطفل) {this.child = child ؛ }} يحدد كائن الحدث خصائص الحدث وحالة الحدث.
بعد حدوث الحدث مباشرة ، يتم تذكير تصرفات المستمع بغسل اليدين.
class public reledListener {public void reled (reledwashingHandsevent VirodwashingHandsevent) {system.out.println ("استمع إلى أمي ، غسل اليدين قبل الأكل ...") ؛ }}لاحظ أن المستمع يغلف الإجراءات بشكل أساسي ، هذا كل شيء.
الرمز أعلاه هو فقط لتوضيح مبدأ وضع المستمع ، والرمز بسيط وغير أنيق للغاية.
ويرث أو ينفذ مكتبة Java Standard ، ويكتب زوجًا من التعليمات البرمجية بشكل عرضي. إنه في وقت متأخر من الليل ، وسأشرح ذلك إذا كان لدي وقت.
فئة عامة طفل {اسم سلسلة خاصة ؛ القائمة الخاصة <StaNyer> liteners ؛ الطفل العام (اسم السلسلة) {this.name = name ؛ this.liteners = lists.newarrayList () ؛ } public void eat () {for (مستمع المستمع: liteners) {if (مستمع مثيل washinghandslistener) {washhandslistener washinghandslistener = (washhandslistener) مستمع ؛ washinghandslistener.fireaftereventInvoked (WashingHandsevent جديد (هذا ، "اغسل يديك")) ؛ }} system.out.println ("eat ...") ؛ } public void addListener (مستمع مستمع) {liteners.add (مستمع) ؛ }} حدث الفئة العامة يمتد EventObject { /*** يقوم بإنشاء حدث نموذج أولي. * * param مصدر الكائن الذي حدث في البداية. * therws alfictalargumentException إذا كان المصدر لاغية. */ الحدث العام (مصدر الكائن) {super (source) ؛ }} الفئة العامة washinghandsevent تمتد الحدث {private string eventName ؛ /*** يبني حدث النموذج الأولي. * * param مصدر الكائن الذي حدث في البداية. * therws alfictalargumentException إذا كان المصدر لاغية. */ public washinghandsevent (مصدر الكائن ، string eventName) {super (source) ؛ this.eventName = eventName ؛ } السلسلة العامة getEventName () {return eventName ؛ } public void seteventName (string eventName) {this.eventName = eventName ؛ }} مستمع الواجهة العامة يمتد java.util.eventListener {public void fireaftereventInvoked (حدث الحدث) ؛} الطبقة العامة WashingHandsListener تنفذ المستمع {Override public void fireaftereventinvoked (حدث حدث) system.out.println ("التحضير قبل الوجبات" + washinghandsevent.getEventName ()) ؛ }} اختبار الفئة العامة {public static void main (string [] args) {kid xiaoming = new kid ("xiaoming") ؛ Xiaoming.AddListener (New WashingHandsListener ()) ؛ xiaoming.eat () ؛ }}نتيجة الإخراج:
لمزيد من المحتوى المتعلق بـ Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص Tips Java Operation DOM" ، "ملخص ملف Java ونصائح تشغيل الدليل" و "ملخص نصائح Java Cache Operation Tips"
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.