مقدمة
رد الاتصال يعني رد الاتصال. يجب أن يكون الأشخاص الذين يعرفون برمجة Windows على دراية بالكلمات الأربع "وظيفة رد الاتصال" ، لكن مبرمجي Java قد لا يعرفون الكثير عنها. "وظيفة رد الاتصال" أو "طريقة رد الاتصال" هي مفهوم مهم للغاية في تصميم وتطوير البرمجيات. من الضروري للغاية للمبرمجين (بغض النظر عن اللغة).
في الآونة الأخيرة ، تعلمت Java وتواصلت مع آلية رد الاتصال (رد الاتصال). عندما التقيت لأول مرة ، شعرت بالارتباك الشديد ، وكانت التفسيرات ذات الصلة التي بحثت عنها عبر الإنترنت إما ذكرها للتو أو قلت ببساطة ، كما لو كنت قد حددت رد الاتصال. بالطبع ، بعد أن فهمت رد الاتصال ، ذهبت لقراءة التفسيرات المختلفة عبر الإنترنت ، ولم تكن هناك مشكلة. ومع ذلك ، بالنسبة لي من هو المبتدئ ، فأنا أفتقر إلى عملية تدريجية. هنا ، سأصف فهمي الشخصي لآلية رد الاتصال بالترتيب من الضحلة إلى العمق. إذا كان هناك أي inapprovientess ، آمل أن أقدم لكم النصيحة!
قبل البدء ، تخيل سيناريو: لقد تعلم الأطفال في رياض الأطفال الإضافة خلال 10.
الفصل 1. أصل القصة
كتب مدرس رياض الأطفال صيغة "1 + 1 =" على السبورة ، وسوف تملأ شياو مينغ الفراغات.
منذ أن تعلمت إضافة أقل من 10 ، يمكن لـ Xiao Ming حساب هذا السؤال بنفسه تمامًا. الرمز لمحاكاة العملية كما يلي:
طالب الفئة العامة {اسم السلسلة الخاصة = null ؛ طالب عام (اسم السلسلة) {// todo constructor constructor stubthis.name =} ب) ؛ system.out.println (الاسم + "الحساب العقلي:" + a + " +" + b + "=" + result) ؛}} عندما كان Xiao Ming يملأ الفراغات ، قام بحساب Clacadd مباشرة ووجد أن النتيجة كانت 2 وكتبت النتيجة في المساحة. رمز الاختبار كما يلي:
اختبار الفئة العامة {public static void main (string [] args) {int a = ؛ int b = ؛ student s = new student ("xiao ming") ؛ s.fillblank (a ، b) ؛}} نتائج التشغيل كما يلي:
الحساب العقلي لـ Xiao Ming: 1 + 1 = 2
تتم هذه العملية بالكامل بواسطة كائن مثيل فصل الطالب وحده ولا تتضمن آلية رد اتصال.
الفصل 2. البحث عن مشكلة لمعلمي رياض الأطفال
خلال فترة الاستراحة ، كان لدى مدرس رياض الأطفال فجأة نزوة وكتب "168 + 291 =" على السبورة للسماح لـ Xiao Ming بإكمالها ، ثم عاد إلى المكتب.
فرك الزهرة! لماذا لا يستطيع جميع المعلمين التواصل مع Xiao Ming؟ من الواضح أنها تتجاوز القواعد ، حسنًا؟ في هذا الوقت ، من الواضح أن Xiao Ming لم يستطع إكماله عن طريق الحساب العقلي مثل واحد أعلاه. عندما كان مرتبكًا ، سلمت شياو هونغ في الفصل آلة حاسبة لا يمكنها حساب الإضافة إلا (المستفيد)! ! ! ! حدث Xiao Ming لمعرفة كيفية استخدام آلة حاسبة ، لذلك قام بحساب النتائج من خلال الآلة الحاسبة وأكمل التعبئة.
رمز الآلة الحاسبة هو:
حاسبة الفئة العامة {public int add (int a ، int b) {return a + b ؛}} تعديل فئة الطالب وأضف طريقة لاستخدام الآلة الحاسبة:
طالب الفئة العامة {اسم السلسلة الخاصة = null ؛ طالب عام (اسم السلسلة) {// todo constructor constructor stubthis.name =} public void setName (اسم السلسلة) calculator (). add (a ، b) ؛} public fillblank (int a ، int b) {int result = usecalculator (a ، b) ؛ system.out.println (name + "استخدم الآلة الحاسبة:" + a + " +" + b + "=" + result) ؛}} رمز الاختبار كما يلي:
اختبار الفئة العامة {public static void main (string [] args) {int a = ؛ int b = ؛ student s = new student ("xiao ming") ؛ s.fillblank (a ، b) ؛}} نتائج التشغيل كما يلي:
يستخدم Xiao Ming الآلة الحاسبة: 168 + 291 = 459
لم تشارك آلية رد الاتصال في هذه العملية ، ولكن تم نقل بعض أعمال Xiao Ming وسيتم مساعدتها بواسطة الآلة الحاسبة.
3. عاد مدرس روضة الأطفال
عندما وجدت أن Xiao Ming قد أكمل إضافة 3 أرقام ، اعتقد المعلم أن Xiao Ming كان ذكيًا للغاية وموهبة مرنة. لذلك كتب "26549 + 16487 =" على السبورة ، وطلب من شياو مينغ إكمال التعبئة في الفصل قبل الفصل ، ثم عاد إلى المكتب.
نظرت شياو مينغ إلى الصديق الصغير الذي كان يستمتع خارج الفصل الدراسي ولم يستطع إلا أن يشعر بالحزن. إذا لم تخرج للعب ، فسيتم تدمير هذا الاستراحة! ! ! ! بالنظر إلى الآلة الحاسبة التي سلمها Xiaohong مرة أخرى ، توصل Xiao Ming إلى خطة: دع Xiaohong يفعل ذلك من أجله.
أخبر Xiao Ming Xiaohong أن السؤال كان "26549 + 16487 =" ، ثم أشار إلى الموقع المحدد لملء النتائج ، ثم خرج للاستمتاع.
هنا ، لا ننفذ Xiaohong وحده ، لكن ننظر إلى هذه الآلة الحاسبة التي يمكنها فقط حساب الإضافة و Xiaohong ككل ، وهي آلة حاسبة فائقة يمكنها حساب النتائج وملء الفراغات. المعلمات التي يحتاجها هذه الآلة الحاسبة الفائقة هي الإضافات والموقف لملء الفراغات ، ويجب أن يتم إبلاغ هذه المحتويات مقدمًا ، أي أن شياو مينغ يريد فضح جزء من أساليبه إلى شياو هونغ. أسهل طريقة هي إخبار Xiao Hong بمرجعته والإضافات معًا.
لذلك ، يجب أن تحتوي طريقة ADD لـ SuperCalculator على معاملتين وإشارة إلى Xiao Ming نفسها ، فإن الكود كما يلي:
الفئة العامة supercalculator {public void add (int a ، int b ، student xiaoming) {int result = a + b ؛ xiaoming.fillblank (a ، b ، result) ؛}} لم يعد Xiao Ming يحتاج إلى حساب عقلي أو آلة حاسبة ، لذلك يحتاج فقط إلى طريقة لطلب المساعدة من Xiaohong. الرمز كما يلي:
طالب الفئة العامة {اسم السلسلة الخاصة = NULL ؛ طالب عام (اسم السلسلة) {// todo todo المنشأة المولدة تلقائيًا. النتيجة) {system.out.println (name + "البحث عن حساب xiaohong:" + a + " +" + b + "=" + result) ؛}} رمز الاختبار كما يلي:
اختبار الفئة العامة {public static void main (string [] args) {int a = ؛ int b = ؛ student s = new student ("xiao ming") ؛ s.callhelp (a ، b) ؛}} النتيجة الجارية هي:
طلب Xiao Ming المساعدة Xiaohong لحساب: 26549 + 16487 = 43036
عملية التنفيذ هي: يدعو Xiao Ming طريقة إضافة Xiaohong (SuperCalculator () جديدة) من خلال طريقة CallHelp الخاصة به ، وتشير إلى مرجعه عند الاتصال.
(هذا) تمريره كمعلمة. بعد أن استخدم Xiaohong الآلة الحاسبة للحصول على النتيجة ، دعا طريقة FillBlank الخاصة بـ Xiao Ming وملأ النتيجة في المساحة الموجودة على السبورة.
الأضواء والأضواء! في هذه المرحلة ، ظهرت وظيفة رد الاتصال رسميًا. طريقة Xiao Ming's FillBlank هي ما نحن في كثير من الأحيان وظيفة رد الاتصال.
وبهذه الطريقة ، يمكن أن نرى بوضوح أن Xiao Ming لم يعد بحاجة إلى الانتظار حتى يتم الانتهاء من الإضافة ويتم ملء النتيجة على السبورة قبل أن يتمكن من الاستمتاع مع أصدقائه. يتم عمل Xiaohong ، الحاسبة الفائقة. بدأت مزايا عمليات الاسترجاعات تنعكس.
الفصل 4. حماتها عند الباب
هناك سيدة عجوز ذات شعر رمادي عند مدخل رياض الأطفال. أنشأت كشك الشارع هناك لبيع بعض الأطعمة غير المرغوب فيها التي تنتهي تقريبًا كل يوم بغض النظر عن الرياح والمطر. لأنني كبير السن ، فإن عقلي مرتبك بعض الشيء ، وغالبًا ما لا أستطيع معرفة مقدار الأموال التي كسبتها. في يوم من الأيام ، سمعت بطريق الخطأ شياو مينغ يتفاخر حول كيفية قاتلتها بالذكاء والشجاعة مع مدرس رياض الأطفال بمساعدة شياوونج. لذلك ، قررت حماتي العثور على حاسبة صغيرة من بطاقة Red Card Super لتكون المساعد الصغير لها وتوفير حزمة من شرائط Weilong الحار كمكافأة. لم يستطع Xiaohong مقاومة الإغراء والاتفاق.
إذا نظرنا إلى الوراء في الكود في الفصل السابق ، فقد وجدنا أن المعلمات المطلوبة بواسطة طريقة Add of the Little Card Super Calculator هي متغيران عدد صحيح وكائن طالب ، لكن السيدة العجوز ليست طالبة ، ولكنها بائع صغير ، لذلك يجب عليها إجراء تعديلات هنا. في هذه الحالة ، من الطبيعي بالنسبة لنا أن نفكر في الميراث وتعدد الأشكال. إذا طلبنا من الطالب شياو مينغ وبائع السيدة العجوز أن يرثوا من فئة أولياء الأمور ، فإننا نحتاج فقط إلى تمرير مرجع إلى فئة الأصل إلى حاسبة صغيرة من بطاقة Red Card Super.
ومع ذلك ، في الاستخدام الفعلي ، بالنظر إلى الميراث الفردي لـ Java وعدم الرغبة في فضح الكثير من نفسه للآخرين ، نستخدم طريقة الوراثة من الواجهة إلى التعاون مع الطبقات الداخلية.
بمعنى آخر ، تأمل Xiaohong في مواصلة تقديم خدمات حسابية للأطفال في الفصل في المستقبل ، وفي الوقت نفسه تقديم خدمات محاسبية للسيدة العجوز ، وحتى توسيع أعمال الآخرين في المستقبل. لذلك وافقت مع جميع العملاء على طريقة للمعالجة الموحدة ، أي المعاملات التي تحتاجها وكيفية القيام بذلك بعد الانتهاء من الحساب. جعلت Xiaohong هذه الطريقة الموحدة في واجهة وقدمها للجميع ، الرمز هو كما يلي:
الواجهة العامة dojob {public void fillblank (int a ، int b ، int result) ؛} نظرًا لأن الإلهام جاء من مساعدة Xiao Ming في ملء الفراغات ، فقد احتفظت Xiaohong بنيتها الأصلية وتعاملت مع جميع أعمالها على أنها FillBlank.
في الوقت نفسه ، قام Xiaohong بتعديل الآلة الحاسبة الخاصة به حتى يتمكن من التعامل مع أشخاص مختلفين يقومون بتنفيذ واجهة DoJob في نفس الوقت. الرمز كما يلي:
الفئة العامة supercalculator {public void add (int a ، int b ، dojob customer) {int result = a + b ؛ customer.fillblank (a ، b ، result) ؛}} بعد أن حصل Xiao Ming والسيدة العجوز على هذه الواجهة ، طالما قاموا بتنفيذ هذه الواجهة ، فإنه يعادل إخبار Xiaohong بالطريقة للتعامل مع النتائج في نموذج موحد ، واستخدام الفئات الداخلية كما هو مذكور سابقًا. الرمز كما يلي:
شياو مينغ:
طالب الفئة العامة {اسم السلسلة الخاصة = NULL ؛ طالب عام (اسم السلسلة) {// todo constructor constructor stubthis.name = name ؛} public void setName (اسم السلسلة) stubsystem.out.println (name + "البحث عن Xiaohong حساب:" + a + " +" + b + "=" + result) ؛}} public void callhelp (int a ، int b) {new supercalculator (). add (a ، b ، new dohomework ()) ؛}}}}}}}} السيدة العجوز:
بائع الفئة العامة {اسم السلسلة الخاصة = null ؛ البائع العام (اسم السلسلة) {// todo constructor constructor stubthis.name = name ؛} stubsystem.out.println (name + "البحث عن مساعدة Xiaohong لتسوية الحسابات:" + a + " +" + b + "=" + result + "meta") ؛}} public void callhelp (int a ، int b) {new supercalculator (). add (a ، b ، new dohomework ()) إجراء الاختبار كما يلي:
اختبار الفئة العامة {public static void main (string [] args) {int a = ؛ int b = ؛ int c = ؛ int d = ؛ student s = new student ("xiao ming") ؛ البائع s = نيو بائع ("الجدة") ؛ s.callhelp (a ، b) ؛ s.callhelp (c ، d) ؛}} نتائج التشغيل كما يلي:
طلب Xiao Ming المساعدة Xiaohong لحساب: 56 + 31 = 87
السيدة العجوز تطلب المساعدة من Xiaohong إلى تسوية الحسابات: 26497 + 11256 = 37753 يوان
الكلمات الأخيرة
يمكن أن نرى بوضوح أن Xiaohong قد تعاملت بالفعل مع هذه المسألة كمهنة ، وستعرف ذلك من خلال النظر في الاسم الذي أعطته واجهة Dojob.
قد يسأل بعض الناس ، لماذا يمكن للسيدة العجوز كسب الكثير من المال عن طريق إنشاء كشك؟ هل هناك أي مشكلة في تركيزك؟ ! ما نتحدث عنه هنا هو آلية رد الاتصال! !
كل ما أعرفه هو أن أعمال Xiaohong استمرت في التوسع لاحقًا ، وقبل التخرج من رياض الأطفال ، اشترت أخيرًا منزلها الأول في حياتها بالمال الذي كسبته.