سؤال

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

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

المحلول

بديل قد ترغب في مراعاته الوكلاء الديناميكي. يتيح لك ذلك استخدام واجهة برمجة تطبيقات على غرار الانعكاس من أجل معالجة الطلبات المقدمة على واجهة معينة - سيكون من السهل جدًا تفويض جميع المكالمات إلى التنفيذ الأساسي ، مع إضافة بعض منطق التسجيل إذا كان اسم الطريقة مطابقة إحدى طرق الاستيلاء.

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

نصائح أخرى

لقد اعتقدت أنه سيكون من الأسهل إنشاء فئة توسيع فئة التنفيذ ذات الصلة لـ BlockingQueue الواجهة ، ويتجاوز remove الطريقة ، وغيرها كما هو مطلوب.

تعديل

يعد إنشاء Wrapper تطبيقًا أفضل إذا كان OP يستخدم أكثر من تطبيق واحد BlockingQueue, ، لكنه يقدم أداءً صغيرًا الكل العمليات ، وغيرها من القضايا البسيطة.

نقطتي هي أن تمديد فئة قائمة الانتظار هو بديل للفه. ما إذا كان بديل أفضل يعتمد على الظروف.

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