C 中代理類別的作用
在軟體工程中,代理類別是用於中介對現有物件的存取的概念,稱為“主題”。代理類別提供了一個改變的接口,允許與主體進行受控且通常有限的交互。
代理類的目的
代理類別的創建有多種原因,包括:
範例:二進位數字限制
考慮以下範例:
struct array1 { int mArray[10]; int &operator[](int i) { /// what to put here } };
在這個範例中,我們要修改Array 類,使其只能包含二進制數字(1 或0)。直接在陣列的operator[]方法中實作這個方法是不可行的,因為它無法存取儲存的值。
為了解決這個問題,我們可以引入一個代理類:
struct aproxy { aproxy(int& r) : mPtr(&r) {} void operator = (int n) { if (n > 1 || n < 0) { throw "not binary digit"; } *mPtr = n; } int * mPtr; }; struct array { int mArray[10]; aproxy operator[](int i) { return aproxy(mArray[i]); } };
中在這種情況下,代理類(aproxy)檢查無效值(非二進制數字)並在遇到時拋出異常。透過讓陣列的operator[]傳回Proxy類別的實例,我們強制執行二進位數字限制,同時仍允許存取陣列元素。
以上是代理類別如何在陣列中強制執行二進位數字限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!