سؤال

أنا الحفاظ على تطبيق تم تصميمه مثل هذا:

messy code --abuses--> simplePoco (POCO data capsule)

تعد كبسولة البيانات فئة بسيطة مع الكثير من Getters و Setters (خصائص)، ويستخدم إطار DI واستخدام حاوية IOC باستمرار لتوفير مثيلات كبسولة البيانات (Lucky Me!).

المشكلة هي، أحتاج إلى إدخال آلية "تغيير الإخطار" simplePoco

messy code --abuses--> simplePoco 
               |
               V
         changes logger,
         status monitor
     (I wanna know about changes)

لدي بعض الخيارات:

  • تقديم IPoco وتعديل الرمز الفوضوي، حتى أتمكن من ذلك simplePoco للسرعة أو notifyingPoco عندما أريد تغيير الإخطار (بطيئة بشكل انتقائي)؟ أو ...

  • اجعل كل شيء افتراضي ولفة مخصص الخاص بي notifyingPoco فئة على رأس simplePoco (حتى أبطأ)؟

  • أنماط التصميم التي لا أعرفها؟

إنه نظام عميل / خادم ولكن أنا فقط تعديل جزء الخادم حتى إذا كان ذلك ممكنا، سأفضل ليس المس التعليمات البرمجية الفوضوية أو رمز العميل (هناك Serializers and Afflections والمواد النينجا المخيفة ...) كما لن يكسر أي شيء عن طريق الخطأ.

سوف تستخدم واجهة يمنع JIT من إبطال المكالمات إلى Getter / Sedter؟

ما هي أفضل طريقة للذهاب بالنظر إلى أن مثيلات SimplePoco هي بشدة سوء المعاملة؟

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

المحلول

أي نوع من المكالمة الافتراضية (سواء على الواجهة أو مباشرة على الفصل - الكل مكالمات الواجهة هي افتراضية!) لن تنبذها CLR JIT. ومع ذلك، فإن مكالمات الواجهة أبطأ قليلا لأنها يجب أن تذهب دائما من خلال المسار المحتمل / الواقن، ولأنهم يتعين عليهم التحول this-Pointer للإشارة في بداية الفصل قبل دخول جسم الوظيفة. لا يتعين على المكالمات الافتراضية مباشرة على أعضاء الفصل أبدا القيام بالتحول، وما لم يتم استخلاص الفصل MarshalByRefObject, ، لا تضغط على الشيكات النفسية.

ومع ذلك، فإن اختلافات الأداء بين هذين ثانيتين للغاية، لذلك يجب أن تتجاهلها وتركز على نظافة تصميم وسهولة التنفيذ بدلا من ذلك.

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