Java تنفذ رد الاتصال
عادةً ما يمرر المطورين الذين يعرفون أنماط التصميم التي تعتمد على الأحداث MS-Windows و X Windows مؤشرًا إلى مصدر الحدث واتصلوا بهذه الطريقة عند حدوث حدث ما (يُعرف أيضًا باسم "رد الاتصال"). لا يدعم نموذج Java الموجهة نحو الكائنات حاليًا مؤشرات الطريقة ، ويبدو أنه لا يمكن استخدام هذه الآلية المريحة.
يدعم Java الواجهة ، ويمكن تنفيذ نفس رد الاتصال من خلال الواجهة. الحيلة هي تحديد واجهة بسيطة وإعلان طريقة تسمى مرة أخرى من قبل واحد المطلوب.
على سبيل المثال ، لنفترض أنه يتم إخطار الحدث عند حدوثه ، يمكننا تحديد واجهة:
الواجهة العامة المثيرة للاهتمام {// هذه مجرد طريقة عادية ، والتي يمكن أن تتلقى معلمات أو إرجاع القيمة الفكرية العامة المثيرة للاهتمام () ؛} وبهذه الطريقة ، لدينا أي قبضة مقبض تنفذ كائن فئة الواجهة هذا.
عند حدوث حدث ما ، يجب إخطار الكائن الذي ينفذ الواجهة المثيرة للاهتمام ويجب استدعاء طريقة مثيرة للاهتمام ().
الفئة eventNotifier {private refressevent ie ؛ منطقية خاصة شيء ما. public eventNotifier (حدث مثير للاهتمام) {ie = event ؛ شيء ما appened = false ؛ } public void dowork () {
إذا (شيء ما) {
// عندما يحدث حدث ما ، قم بإعلام الواجهة عن طريق استدعاء هذه الطريقة
ie.Interestingevent () ؛
}
}
}في هذا المثال ، يتم استخدام شيء ما لتمييز ما إذا كان الحدث يحدث.
يجب أن ينفذ الفصل الذي يرغب في الحصول على إخطارات الحدث واجهة مثيرة للاهتمام ويمرر مرجعها إلى إخطار الحدث.
الطبقة العامة callme تنفذ مثيرة للاهتمام {private eventNotifier en ؛ Public CallMe () {// إنشاء كائن إشعار حدث جديد وقم بتمريره إلى en = new eventNotifier (this) ؛ }.ما سبق هو مثال بسيط للغاية لتوضيح تنفيذ عمليات الاسترجاعات في جافا.
بالطبع ، يمكن أيضًا تسجيل كائنات متعددة مهتمة بهذا الحدث في فئة إدارة الأحداث أو فئة الإخطار.
1. تحديد واجهة مثيرة للاهتمام ، وطريقة رد الاتصال غير معروفة (حدث سلسلة) يستقبل ببساطة معلمة سلسلة.
واجهة مثيرة للاهتمام {public void trugentevent (string event) ؛}2. تنفيذ واجهة مثيرة للاهتمام وطبقة معالجة الأحداث
Class Callme تنفذ مثيرة للاهتمام {اسم السلسلة الخاصة ؛ Public CallMe (اسم السلسلة) {this.name = name ؛ } public void truftectevent (string event) {system.out.println (name + ": [" + event + "] deled") ؛ }} 3. مدير الحدث ، أو إشعار الحدث
Class eventNotifier {private list <CallMe> callmes = new ArrayList <CallMe> () ؛ public void Regist (callme callme) {callmes.add (callme) ؛ } public void dowork () {for (callme callme: callmes) {callme.Interestingevent ("sample event") ؛ }}}4. اختبار
الفئة العامة CallMetest {public static void main (string [] args) {eventNotifier ren = new eventNotifier () ؛ callme a = new callme ("callme a") ؛ Callme B = New CallMe ("Callme B") ؛ // regiest ren.regist (a) ؛ Ren.regist (B) ؛ // Test Ren.Dowork () ؛ }}ما سبق هو مقدمة لآلية رد الاتصال Java. يمكن للطلاب المحتاجين الرجوع إليه.