ما هي فئة singleton؟ هل يمكن أن يساعدني في إدارة مثيل واحد من الفصل لخدماتهما ذات الصلة؟
-
18-09-2019 - |
سؤال
قد يبدو هذا المعقدة ولكن سأطلب على أي حال:
أنا أشغل خدمة أ الذي يستخدم الفئة عاشر. وبعد أريد أن أبدأ خدمة أخرى ب الذي يستخدم الطبقات أ إلى جانب فصول جديدة.
خدمة أ انا اصلا اركض. أقوم بنشر خدمة ساخنة ب.
هنا هو السؤال الحقيقي - سوف الخدمة ب استخدم نفس مثيل الفصل عاشر أو مثيل منفصل. كيف يمكن أن يساعدني فئة Singleton هنا؟
المحلول
سترشح كل خدمة في مساحة عملية نظام التشغيل الخاصة بها (OS)، وكل مساحة عملية لديها مثيلات الطبقة الخاصة بها. عادة ما يتم ترميز الطبقة "Singleton" باستخدام الحقول الثابتة في فئة، والتي ستكون محلية في المساحة العملية التي يعمل فيها الرمز، لذلك لا، لن يشاركوا المفردين. كل منها سيحصل على مثال خاص.
ومع ذلك، يمكنك أن تفعل ما تحاول القيام به، ومع ذلك، باستخدام بعض عملية المزامنة الخارجية الخارجية، (على سبيل المثال، تعريض Singleton أكثر من جافا متساوية عن طريق التحكم في .NET. Singleton، ولدي خدماتك "الاتصال ب" واستخدام أن Singleton غير قابل للوصول عن بعد)
نصائح أخرى
أنا لست على دراية بتفاصيل كيفية تشغيل خدمات Java Web، ولكن إذا كانت كلاهما يعمل في نفس VM، فأنا أعتقد أن الفئات ستقوم بمشاركة جميع التطبيقات في جميع التطبيقات في VM والحقول الثابتة، وبالتالي سيتم تقاسمها. نظرا لأن نمط Singleton يتم إنجازه عادة عن طريق إرفاق مثيل واحد لعضو ثابت، فسيتم تقاسم Singleton.
هذا بناء على: محادثات الكود النظيف - "الدولة العالمية والفرسان"
يجب أن تكون قادرا على اختبارها عن طريق كتابة اثنين من خدمات الويب البسيطة. واحد يقوم بشيء إلى Singleton، مثل تعيين العلم، وآخر يفيك عنه.