यह एक पुरानी समस्या हो सकती है और मुझे यकीन है कि हर किसी के अपने तरीके हैं। मान लीजिए मैं कुछ गुण जैसेजावा गुण - खुलासा करने या प्रकट करने के लिए नहीं?
secret.user.id=user
secret.password=password
website.url=http://stackoverflow.com
मान लीजिए परिभाषित मैं 100 विभिन्न वर्गों और स्थानों पर जहां मैं इन गुणों का उपयोग करने की आवश्यकता होती है। कौन सा अच्छा है (1) मैं एक यूटिल क्लास बनाता हूं जो सभी गुणों को लोड करेगा और एक महत्वपूर्ण स्थिर का उपयोग करके उनकी सेवा करेगा: यूटिल एक सिंगलटन है जो सभी गुणों को लोड करता है और getInstance() कॉल पर रहता है।
Util myUtil = Util.getInstance();
String user = myUtil.getConfigByKey(Constants.SECRET_USER_ID);
String password = myUtil.getConfigByKey(Constants.SECRET_PASSWORD);
..
//getConfigByKey() - inturns invokes properties.get(..)
doSomething(user, password)
तो जहां भी मुझे इन गुणों की आवश्यकता है, मैं ऊपर दिए गए कदम उठा सकता हूं।
(2) मैं इन गुणों का प्रतिनिधित्व करने के लिए एक सार्थक वर्ग बना रहा हूं; कहें, एप्लिकेशन कॉन्फिग और विशिष्ट गुण प्राप्त करने के लिए गेटर्स प्रदान करें।
ApplicationConfig config = ApplicationConfig.getInstance();
doSomething(config.getSecretUserId(), config.getPassword());
//ApplicationConfig would have instance variables that are initialized during
// getInstance() after loading from properties file.
नोट:: तो ऊपर दिए गए कोड की तरह लग सकता है गुण फ़ाइल जैसे भविष्य में केवल मामूली बदलाव होगा।
मेरी व्यक्तिगत पसंद है (2) - मुझे कुछ टिप्पणियां सुनें?
क्या प्रॉपर्टी को किसी भी तरह से कैश नहीं किया जाएगा, इसलिए यदि आप इसे कई अलग-अलग स्थानों में लोड करते हैं तो कोई प्रदर्शन दंड नहीं है? – willcodejavaforfood
बॉयलर प्लेट क्यों? मैं बात नहीं करता कि यह एक अच्छा सुझाव है। यह भी ध्यान दें, मैंने इसे प्रोग्राम डिज़ाइन के साथ टैग किया है। मुझे कोड पसंद है जो अच्छी तरह से काम करता है और अच्छी तरह से पढ़ता है। –