Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Proxy Class ใน C ++ คืออะไร?


ที่นี่เราจะดูว่าคลาสพร็อกซีใน C ++ คืออะไร คลาส Proxy นั้นคือรูปแบบการออกแบบ Proxy ในรูปแบบนี้ ออบเจ็กต์จัดเตรียมอินเทอร์เฟซที่แก้ไขสำหรับคลาสอื่น เรามาดูตัวอย่างกัน

ในตัวอย่างนี้ เราต้องการสร้างคลาสอาร์เรย์ที่สามารถเก็บเฉพาะค่าไบนารี [0, 1] นี่เป็นครั้งแรกที่ลอง

โค้ดตัวอย่าง

class BinArray {
   int arr[10];
   int & operator[](int i) {
      //Put some code here
   }
};

ในรหัสนี้ไม่มีการตรวจสอบเงื่อนไข แต่เราต้องการให้โอเปอเรเตอร์[]บ่นถ้าเราใส่บางอย่างเช่น 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; // 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