استخدام الأحداث لتعديل كائنات المجال

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

  •  23-09-2019
  •  | 
  •  

سؤال

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

هل هناك أي مفاضلات يجب أن أشعر بالقلق هنا ، مثل كيف سيؤثر استخدام الأحداث على قابلية الاختبار؟

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

المحلول

تم تصميم الأحداث لفصل منطقة واحدة من منطقة أخرى.

هذا في بعض الأحيان ينطوي بعض السلوك غير المتزامن, والتي يمكن أن تكون ميزة إضافية ، ولكنها ليست إلزامية. وض حدث للآخرين ، ثم تقديم ملاحظات واجهة المستخدم الرسومية دون انتظار معالجة الحدث بالفعل. يتم تخزين هذا الحدث في قائمة انتظار ، ويتم معالجة واحدة أو أكثر من الخيوط هذه في قائمة الانتظار في وتيرتها.

بالنسبة للأحداث المتزامنة ، فهي مفيدة حقًا للاتصال بين الوحدات ، حيث الاثنين الوحدات النمطية ليس لديها تبعيات لوقت التجميع على بعضها البعض. يمكن أن يعرف كلاهما عن فئة الأحداث ، و "جهاز توجيه الأحداث":

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

لا يعرف الوحدة عن الآخر ، وبالتالي مفهوم فك الارتباط. جيد جدا إذا كان يجب الحفاظ على كلاهما بشكل منفصل :-)


توجد العديد من الاختلافات ، لبعض الموضوعات مثل:

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

يبدو تعديل كائنات المجال عبر الأحداث غريبًا بعض الشيء. هل يتم فصل الرموز المذكورة بشكل مبرر حقًا؟

ومع ذلك ، لن أعطي رأيًا محددًا قبل فهم ما تفكر فيه بشكل أكثر دقة.

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