मेरे पास एक कक्षा है जो एक बड़ी सॉफ्टवेयर परियोजना के लिए उपयोगकर्ता वरीयताओं का प्रबंधन करती है। प्रोजेक्ट में किसी भी वर्ग को लगातार स्टोर से उपयोगकर्ता वरीयता को सेट या पुनर्प्राप्त करने की आवश्यकता हो सकती है, इस वर्ग पर स्थैतिक विधियों को कॉल करना है। यह केंद्रीकृत प्रबंधन वरीयताओं को प्रोग्रामेटिक रूप से पूरी तरह से मिटा दिया जा सकता है - जो प्रत्येक प्रीफ को अपने उपयोग कोड के करीब संभाला जाता है, जो पूरे प्रोजेक्ट में छिड़क दिया जाता है।क्या "मास्टर प्राथमिकताएं" कक्षा एक अच्छा विचार है?
मैं इसके दौरान केंद्रीकरण डिजाइन के एक और निहितार्थ में भाग गया। सॉफ्टवेयर में एक सार्वजनिक एपीआई है। वह एपीआई अपने आप को एक जार में उपलब्ध कराया जा सकता है। उस एपीआई में कक्षाएं प्रीफ प्रबंधन वर्ग को संदर्भित कर सकती हैं। तो, प्रीफ मैनेजर को एपीआई जार में जाना है।
प्रत्येक वरीयता का डिफ़ॉल्ट मान हो सकता है। सॉफ़्टवेयर स्टार्टअप पर, डिफ़ॉल्ट का गणना किया जा सकता है। एल्गोरिदम वरीयता पर निर्भर करता है, और इस प्रकार उपयोग कोड के पास रहता है। इसलिए यदि प्रीफ़ मैनेजर को डिफ़ॉल्ट रूप से आने की आवश्यकता है, तो यह कक्षा को प्रश्न में कॉल करता है।
लेकिन अब वह प्रीफ़ मैनेजर एक "ऑक्टोपस क्लास" बन गया है, जो एपीआई जार में सभी प्रकार के वर्गों में चूस रहा है जो वहां नहीं होना चाहिए। यदि ऐसा नहीं होता है, तो एपीआई जार का उपयोग करने वाले प्रोग्राम जल्दी से क्लासडिफ अपवादों में भाग लेते हैं। यदि ऐसा होता है, तो एपीआई जार अब फूला हुआ है, क्योंकि उनमें से प्रत्येक वर्ग अभी भी दूसरों को संदर्भित कर सकता है।
सामान्यतः, अन्य जावा प्रोग्रामर अपनी प्राथमिकताओं को केंद्रीकृत वर्ग के साथ प्रबंधित करते हैं?
क्या सार्वजनिक एपीआई के हिस्से के रूप में उस स्थिर प्रीफ प्रबंधन वर्ग को वितरित करने के लिए यह समझ में आता है?
क्या प्रीफ़ मैनेजर डिफ़ॉल्ट निर्धारित करने के लिए कोड का रखरखाव होना चाहिए?
वाह; बहुत बढ़िया जवाब। मेरे पास शायद 10% के साथ मामूली quibbles है, लेकिन संबंधित prefs का विभाजन एक अच्छा फोन था, और एक मुझे सोचा था। –
मुझे अक्सर एक ही समस्या का सामना करना पड़ता है (हालांकि सौभाग्य से ग्रहण मुझे कई विकल्प नहीं देता है), मुझे आपकी quibbles सुनने में दिलचस्पी होगी :) – Uri
साझा प्रबंधक उदाहरण प्राप्त करने के लिए - मैं वास्तव में किसी भी लॉकिंग के बारे में चिंतित नहीं था डिस्क लेखन स्तर (जो जावा हैंडल) पर, लेकिन निश्चित रूप से उच्च स्तर का अमूर्तता है, मुझे एहसास है कि मुझे भी चिंतित होना चाहिए। –