Computer >> Máy Tính >  >> Lập trình >> C ++

Lớp Proxy trong C ++ là gì?

Ở đây chúng ta sẽ xem lớp proxy trong C ++ là gì. Lớp Proxy về cơ bản là mẫu thiết kế Proxy. Trong mẫu này, một đối tượng cung cấp một giao diện được sửa đổi cho một lớp khác. Hãy để chúng tôi xem một ví dụ.

Trong ví dụ này, chúng ta muốn tạo một lớp mảng, chỉ có thể lưu trữ các giá trị nhị phân [0, 1]. Đây là lần thử đầu tiên.

Mã mẫu

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

Trong mã này, không có điều kiện kiểm tra. Nhưng chúng tôi muốn toán tử [] phàn nàn nếu chúng tôi đặt một cái gì đó như arr [1] =98. Nhưng điều này là không thể, bởi vì nó đang kiểm tra chỉ mục chứ không phải giá trị. Bây giờ chúng tôi sẽ cố gắng giải quyết vấn đề này bằng cách sử dụng mẫu proxy.

Mã mẫu

#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;
   }
}

Đầu ra

1
This is not a binary digit