मैं इस (सरलीकृत) की तरह वर्ग है मान लीजिए:यह डिजाइन पैटर्न क्या है? इसका इस्तेमाल कैसे करें?
class Foo_p;
class Foo
{
private:
Foo_p *p;
public:
Foo();
/* methods, etc... */
};
इस वर्ग के एक API का एक हिस्सा है। Foo_p कक्षा के सभी निजी हिस्सों में है, जो कक्षा में स्वयं को सामान्य रूप से घोषित नहीं किया गया है, बल्कि एक अलग अग्रेषित घोषित वर्ग में है जो केवल अंतर्निहित कार्यान्वयन द्वारा उपयोग किया जाता है जो बाहर दिखाई नहीं देता है।
मैंने इस परियोजना को दो परियोजनाओं में उपयोग किया है, क्या इसके लिए कोई नाम है?
इसके अलावा, मैं इसे सही तरीके से कैसे उपयोग करूं (उदा। अपवाद सुरक्षा, आदि)? वास्तविक कार्यान्वयन कहां जाना चाहिए? क्लास फू में, सामान्य रूप से, डेटा के संग्रहण के लिए केवल Foo_p का उपयोग करके, या Foo_p कक्षा में फू के साथ केवल एक आवरण होता है?
मत दोनों हेडर और सामान्य सुरक्षा का स्तर (सार्वजनिक/निजी) "अनिवार्य रूप से कार्यान्वयन को छिपाने"? –
@ मैथ्यू: दुर्भाग्य से, नहीं। आपको कार्यान्वयन शीर्षलेखों को शामिल करना होगा, जो अक्सर उदाहरण के लिए विंडोज हेडर, जो कि बेहद खराब हैं, पर असहज हो सकते हैं। – Puppy
@MatthewFlaschen: हाँ, लेकिन केवल इस अर्थ में कि आप इसे एक्सेस नहीं कर सकते हैं, लेकिन कोड को देखते समय भी आप इसे * देख सकते हैं। – bitmask