तो एक नेस्टेड क्लास क्यों बनाएं?
मैं कुछ महत्वपूर्ण कारणों के बारे में सोच सकता हूं:
1. एनकैप्सुलेशन सक्षम करें
कई बार नेस्टेड क्लास कक्षा के कार्यान्वयन विवरण हैं। मुख्य वर्ग के उपयोगकर्ताओं को अपने अस्तित्व की परवाह नहीं करनी चाहिए। आपको मुख्य कोड के उपयोगकर्ताओं को अपना कोड बदलने की आवश्यकता के बिना उन्हें बदलने में सक्षम होना चाहिए।
2. नाम प्रदूषण से बचें
जब तक वे उस दायरे में उपयुक्त न हों, आपको एक दायरे में प्रकार, चर, कार्य आदि नहीं जोड़ना चाहिए। यह एनकैप्सुलेशन की तुलना में अलग है। यह नेस्टेड प्रकार के इंटरफ़ेस को उजागर करने के लिए उपयोगी हो सकता है लेकिन नेस्टेड प्रकार के लिए उचित स्थान अभी भी मुख्य वर्ग है। C ++ भूमि में, इट्रेटर प्रकार एक ऐसा उदाहरण है। मैं C # में अनुभवी नहीं हूँ कि आप इसमें उदाहरण दें।
आइए यह स्पष्ट करने के लिए एक सरल उदाहरण बनाते हैं कि एक नेस्टेड क्लास को उसी दायरे में स्थानांतरित करना क्यों कि मुख्य वर्ग नाम प्रदूषण है। मान लीजिए कि आप एक लिंक किए गए सूची वर्ग को लागू कर रहे हैं। आम तौर पर, आप उपयोग करेंगे
publid class LinkedList
{
class Node { ... }
// Use Node to implement the LinkedList class.
}
यदि आप Nodeउसी दायरे में जाने का निर्णय लेते हैं LinkedList, तो आपके पास होगा
public class LinkedListNode
{
}
public class LinkedList
{
// Use LinkedListNode to implement the class
}
LinkedListNodeLinkedListवर्ग के बिना उपयोगी होने की संभावना नहीं है। यहां तक कि अगर LinkedListकुछ कार्यों को प्रदान किया जाता है जो एक ऐसी LinkedListNodeवस्तु को पुन: प्राप्त करता है जो एक उपयोगकर्ता LinkedListउपयोग कर सकता है, तो यह अभी भी LinkedListNodeकेवल तब उपयोगी होता है जब LinkedListइसका उपयोग किया जाता है। उस कारण से, "नोड" वर्ग को एक सहकर्मी वर्ग बनाते LinkedListहुए युक्त गुंजाइश प्रदूषित कर रहा है।