ما هي فئة singleton؟ هل يمكن أن يساعدني في إدارة مثيل واحد من الفصل لخدماتهما ذات الصلة؟

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

سؤال

قد يبدو هذا المعقدة ولكن سأطلب على أي حال:

أنا أشغل خدمة أ الذي يستخدم الفئة عاشر. وبعد أريد أن أبدأ خدمة أخرى ب الذي يستخدم الطبقات أ إلى جانب فصول جديدة.

خدمة أ انا اصلا اركض. أقوم بنشر خدمة ساخنة ب.

هنا هو السؤال الحقيقي - سوف الخدمة ب استخدم نفس مثيل الفصل عاشر أو مثيل منفصل. كيف يمكن أن يساعدني فئة Singleton هنا؟

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

المحلول

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

ومع ذلك، يمكنك أن تفعل ما تحاول القيام به، ومع ذلك، باستخدام بعض عملية المزامنة الخارجية الخارجية، (على سبيل المثال، تعريض Singleton أكثر من جافا متساوية عن طريق التحكم في .NET. Singleton، ولدي خدماتك "الاتصال ب" واستخدام أن Singleton غير قابل للوصول عن بعد)

نصائح أخرى

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

هذا بناء على: محادثات الكود النظيف - "الدولة العالمية والفرسان"

يجب أن تكون قادرا على اختبارها عن طريق كتابة اثنين من خدمات الويب البسيطة. واحد يقوم بشيء إلى Singleton، مثل تعيين العلم، وآخر يفيك عنه.

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