यदि आप किसी प्रोग्राम में नए कॉन्फ़िगरेशन विकल्प जोड़ते हैं, तो अक्सर उन विकल्पों को प्राप्त करने के मामले में इसमें बहुत सारे रिपल इफेक्ट हो सकते हैं, जहां पर उन्हें कार्य करने की आवश्यकता होती है। इससे निपटने के तीन बुनियादी तरीके हैं जिनसे मैं अवगत हूं:
अपने प्रोग्राम के उन हिस्सों में सभी कॉन्फ़िगरेशन सेटिंग्स को पास करें जिनकी उन्हें मूल रूप से स्पष्ट रूप से आवश्यकता है। यह सबसे स्पष्ट तरीका है और जिस तरह से चीजों को सबसे अधिक डिकम्पोज करता है। नकारात्मक पक्ष यह है कि यह दोनों क्रिया और भंगुर है।
सबसे अधिक उपयोग की जाने वाली कॉन्फ़िगरेशन सेटिंग्स को वैश्विक / स्थिर बनाएं। यह सबसे सरल तरीका है, लेकिन दूरी पर कार्रवाई का परिचय देता है, परीक्षण में बाधा डालता है और मानता है कि कॉन्फ़िगरेशन वास्तव में वैश्विक है (आप किसी भी समय केवल एक कॉन्फ़िगरेशन चाहते हैं)।
कॉन्फ़िगरेशन क्लास / संरचना बनाएं जिसमें पूरे प्रोग्राम के लिए या प्रोग्राम के भीतर प्रत्येक प्रमुख चिंता के लिए सभी कॉन्फ़िगरेशन विकल्प हों, और फिर इसे स्पष्ट रूप से पास करें। यह (1) की तुलना में कम (2) से अधिक स्पष्ट है। यदि आप केवल एक फ़ंक्शन कॉल के लिए सेटिंग बदलना चाहते हैं, तो आप कॉन्फ़िग ऑब्जेक्ट को क्लोन कर सकते हैं और इस एक मान को बदल सकते हैं। यह परीक्षण और व्यवहार दोनों में उपयोगी है। हालाँकि, आप अभी भी एक फ़ंक्शन के लिए संभावित रूप से गुजरने वाले टन को एक फ़ंक्शन पर समाप्त करते हैं, जिसकी आवश्यकता नहीं है और कॉन्फ़िगरेशन वर्ग / संरचना में एक मान को बदलने से अभी भी दूरी पर कार्रवाई हो सकती है।
क्या आप विचार करेंगे (3) एक पैटर्न या एक विरोधी पैटर्न? यदि यह एक विरोधी पैटर्न है, तो आप इसके बजाय क्या करते हैं?