OOP: مشكلة في إخطار الكائنات الأخرى في التسلسل الهرمي

StackOverflow https://stackoverflow.com/questions/1853162

سؤال

أنا دائما صراع مع إرسال الرسائل بين الكائنات. النظر في التسلسل الهرمي لكائنات مسابقة:

  • اختبار
    • قائمة مشاركين
      • سؤال
        • أجب قائمة
          • إجابه

لذا:
اختبار لديه قائمة سكمية
قائمة سؤالية لها أسئلة متعددة
سؤال لديه قائمة إجابة
قائمة الإجابات لديها إجابات متعددة

عند النقر فوق إجابة (نحن نتحدث فلاش AS3 هنا):
الإجابة يطرح قائمة الإجابة.
قائمة الإجابة يخطر السؤال.
السؤال يطرح قائمة مشتركة.
قائمة سكمية تؤطر الاختبار.

بمعنى آخر، فقاعات الرسالة لأعلى. هذا ممكن منذ مرور كائن "الوالدين" من خلال منشئ "طفل". لكنني أعتقد أنني قرأت في مكان ما أن الكائنات لا ينبغي أن تكون على علم بها الوالد. يجب أن آخذ نهج آخر؟

شكرًا.

هل كانت مفيدة؟

المحلول

نعم، يجب أن لا تعطي روابط كائنات الطفل إلى والدهم. أعتقد أنك الوضع الذي شرحته أعلاه هو التسلسل الهرمي للشاشة. في هذه الحالة، يمكنك القيام بذلك بشكل أفضل بكثير باستخدام نظام الحدث. يمكنك إنشاء أحداث مخصصة التي يتم إرسالها، عندما تحدث الأمور وسيقوم الوالد بإضافة المستمعين إلى الأحداث لرعاية هؤلاء.

سيكون سيناريو حدث محتمل لهيكلك هو ما يلي:

  • يتم النقر فوق الإجابة (زر)، وتطلق الإشعارات في قائمة الإجابات الاستماع ذلك.
  • ترسل قائمة الإجابات حدثا "أجاب"، والذي وردت به السؤال.
  • يرسل السؤال حدثا "أجاب" لإخطار قائمة الأسئلة بمناسبة هذا السؤال كما أجاب
  • عندما تلقى قائمة الأسئلة الأحداث الإجابة عن طريق جميع الأسئلة، فإنه يرسل حدث "انتهى" لإخبار الاختبار الذي اكتمله

نصائح أخرى

قد تنظر إلى مراقب نمط. في نمط التصميم هذا، يمكن الكائنات الاستماع إلى التغييرات (أو الأحداث) لكائن. بهذه الطريقة، يمكن للرسائل فقاعة بدون الأطفال الذين يعرفون الوالدين مباشرة. إنهم يعرفون أنهم يتعين عليهم إخطار مستمعيه بأن شيئا ما قد تغير. يمكنك حتى الاستماع كائنات متعددة للحصول على إجابات إذا كنت تريد ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top