यहां हम देखेंगे कि C++ में प्रॉक्सी क्लास क्या है। प्रॉक्सी क्लास मूल रूप से प्रॉक्सी डिज़ाइन पैटर्न है। इस पैटर्न में एक ऑब्जेक्ट दूसरी क्लास के लिए संशोधित इंटरफेस प्रदान करता है। आइए एक उदाहरण देखते हैं।
इस उदाहरण में, हम एक ऐरे क्लास बनाना चाहते हैं, जो केवल बाइनरी मान [0, 1] स्टोर कर सके। यह पहली कोशिश है।
उदाहरण कोड
class BinArray {
int arr[10];
int& operator[](int i) {
// यहां कुछ कोड डालें
}
};
इस कोड में कोई कंडीशन चेकिंग नहीं है। लेकिन हम चाहते हैं कि ऑपरेटर[] शिकायत करे यदि हम arr[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; // कोई अपवाद नहीं
cout << a.item_at_pos(0) << endl;
}
catch (const char* e) {
cout << e << endl;
}
try {
a[1] = 98; // अपवाद फेंकता है
cout << a.item_at_pos(1) << endl;
}
catch (const char* e) {
cout << e << endl;
}
return 0;
}
आउटपुट
1 This is not a binary digit