प्रश्न पुरानी टोपी है - हमारे सिस्टम में कॉन्फ़िगरेशन फ़ाइल या सिस्टम कॉन्फ़िगरेशन का समर्थन करने के लिए उचित डिज़ाइन क्या है? मैं निम्न आवश्यकताओं की पहचान की है:जावा सिस्टम में कॉन्फ़िगरेशन डिज़ाइन पैटर्न
- लाइव को फिर से लोड करने में सक्षम होना चाहिए और परिवर्तन नहीं redeploying
- सॉफ्टवेयर अनुप्रयोगों है कि एक ही है, जैसे, एसक्यूएल या memcached साख पर भरोसा करते हैं के लिए के साथ तुरंत उठाया है, होना चाहिए एक अलग जगह में परिवर्तन लागू करने और एक बार में तैनात है, भले ही आवेदन पत्र
- कई प्रक्रियाओं/एक ही आवेदन समर्थित
चल मशीनों और यह डिजाइन मैं के कुछ हिस्सों अलग स्थानों में अलग मशीनों पर कर रहे हैं करने के लिए संभव मैं हूँ ट्रगलिंग के साथ:
- क्या प्रत्येक प्रमुख वर्ग कन्स्ट्रक्टर को इनपुट पैरामीटर के रूप में अपनी "कॉन्फ़िगर" कक्षा लेनी चाहिए? क्या सही कॉन्फ़िगरेशन के संबंध में तत्काल के लिए जिम्मेदार एक कारखाना होना चाहिए? या प्रत्येक कक्षा को सिर्फ अपनी कॉन्फ़िगरेशन से पढ़ा जाना चाहिए और कुछ हद तक पुनः लोड करना चाहिए?
- यदि कक्षा बी कक्षा ए से निकला है, या इसके चारों ओर बना है, तो क्या यह कॉन्फ़िगर फ़ाइल को विरासत में प्राप्त करने के लिए समझ में आता है?
- कहें कक्षा ए एम 1 और एम 2 ("मुख्य" के लिए एम) द्वारा निर्मित है और एम 1 संसाधन को तत्काल करने के लिए ज़िम्मेदार है। मान लें कि संसाधन MySQL प्रमाण-पत्रों पर निर्भर करता है जो मुझे एम 1 और एम 2 के बीच आम होने की उम्मीद है, क्या ब्रेक स्वामित्व के व्यापार से बचने और ए की कॉन्फ़िगरेशन वी में डालने का कोई तरीका है। एम 1 और एम 2 की कॉन्फ़िगरेशन में संसाधन को डुप्लिकेट करें?
ये डिजाइन समस्याएं हैं जिनके साथ मैं अभी व्यवहार कर रहा हूं और वास्तव में यहां डिजाइन पैटर्न या ढांचे को नहीं जानता हूं। मैं जावा में हूं इसलिए किसी भी पुस्तकालय को हल करने का बहुत स्वागत है।
मैं इसे एक सिंगलटन के रूप में निर्दिष्ट करने के बजाए कक्षा को इंजेक्ट करना चाहता हूं। यह अभी तक 4 अनुप्रयोगों में और 20 इन-हाउस पुस्तकालयों में एक * बहुत * आसान –
वैश्विक परीक्षण करेगा? – djechlin