विकिपीडिया कहता है
"सॉफ्टवेयर इकाइयां (कक्षाएं, मॉड्यूल, फ़ंक्शन, आदि) विस्तार के लिए खुली होनी चाहिए, लेकिन संशोधन के लिए बंद हो गई"
शब्द कार्यों ने मेरी आंखों को पकड़ लिया, और मुझे अब आश्चर्य होता है कि क्या हम यह मान सकते हैं कि किसी विधि के लिए अधिभार बनाना ओपन / बंद सिद्धांत का एक उदाहरण माना जा सकता है या नहीं?
एक उदाहरण बताता हूं। विचार करें कि आपके पास अपनी सेवा परत में एक विधि है, जिसका उपयोग लगभग 1000 स्थानों पर किया जाता है। विधि userId हो जाती है और निर्धारित करती है कि उपयोगकर्ता व्यवस्थापक है या नहीं:
bool IsAdmin(userId)
अब विचार करें कि कहीं यह निर्धारित करना आवश्यक है कि उपयोगकर्ता उपयोगकर्ता नाम पर आधारित है या नहीं, उपयोगकर्ता नाम पर आधारित है। यदि हम उपर्युक्त विधि के हस्ताक्षर को बदलते हैं, तो हमने 1000 स्थानों में कोड को तोड़ दिया है (कार्यों को संशोधन के लिए बंद कर दिया जाना चाहिए)। इस प्रकार हम उपयोगकर्ता नाम प्राप्त करने के लिए एक अधिभार बना सकते हैं, उपयोगकर्ता नाम यूज़रनेम और मूल विधि के आधार पर पा सकते हैं:
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
इस तरह, हमने इसके लिए एक अधिभार बनाने के माध्यम से अपने कार्य को बढ़ाया है (कार्य विस्तार के लिए खुला होना चाहिए)।
क्या यह एक खुला / बंद सिद्धांत उदाहरण है?