यहां हम देखेंगे कि C++ में प्रॉक्सी क्लास क्या है। प्रॉक्सी क्लास मूल रूप से प्रॉक्सी डिज़ाइन पैटर्न है। इस पैटर्न में एक वस्तु दूसरे वर्ग के लिए एक संशोधित इंटरफ़ेस प्रदान करती है। आइए एक उदाहरण देखें।
इस उदाहरण में, हम एक ऐरे क्लास बनाना चाहते हैं, जो केवल बाइनरी वैल्यू [0, 1] को स्टोर कर सके। यह पहला प्रयास है।
उदाहरण कोड
class BinArray { int arr[10]; int & operator[](int i) { //Put some code here } };
इस कोड में कोई कंडीशन चेकिंग नहीं है। लेकिन हम चाहते हैं कि ऑपरेटर [] शिकायत करे अगर हम गिरफ्तारी [1] =98 की तरह कुछ डालते हैं। लेकिन यह संभव नहीं है, क्योंकि यह सूचकांक की जांच कर रहा है मूल्य नहीं। अब हम प्रॉक्सी पैटर्न का उपयोग करके इसे हल करने का प्रयास करेंगे।
उदाहरण कोड
#include <iostream> using namespace std; class ProxyPat { private: int * my_ptr; public: ProxyPat(int& r) : my_ptr(&r) { } void operator = (int n) { if (n > 1) { throw "This is not a binary digit"; } *my_ptr = n; } }; class BinaryArray { private: int binArray[10]; public: ProxyPat operator[](int i) { return ProxyPat(binArray[i]); } int item_at_pos(int i) { return binArray[i]; } }; int main() { BinaryArray a; try { a[0] = 1; // No exception cout << a.item_at_pos(0) << endl; } catch (const char * e) { cout << e << endl; } try { a[1] = 98; // Throws exception cout << a.item_at_pos(1) << endl; } catch (const char * e) { cout << e << endl; } }
आउटपुट
1 This is not a binary digit