代理模式(Proxy):為其他對象提供一種代理以控制這個對象的訪問。
應用:
(1);遠程代理,為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在於不同地址空間的事實
(2);虛擬代理,根據需要創建開銷大的對象。通過虛擬代理存放實例化需要很長時間的真是對象。
(3);安全代理,用來控制真是對象訪問時的權限。
(4);智能指針,當調用真實的對象時,代理處理另外一些事。
Effective C++:
1:確定對象被使用前已經被初始化
(1),為內置類型進行手工初始化,因為C++不保證初始化他們
(2),夠函數最好使用成員初始列(member initialization list),而不要在構造函數內使用賦值操作(assignment)。初始列列出的成員變量,期排列次序應該和他們在class中的生命次序相同。
(3),為免除“跨編譯大暖初始化次序”問題,用local static 對象替換non-local static 對象(單例模式)
2:構造/析構/賦值運算
(1),編譯器可以案子為class創建default構造函數、copy構造函數、copy assignment操作符,以及析構函數
(2),為駁回編譯器自動提供的技能,可將相應的成員函數聲明為private並且不予實現。使用像Uncopyable這樣的base class也是一種做法。
class Uncopyable { protected: Uncopyable() {} ~Uncopyable() {} private: Uncopyable(const Uncopyable&); Uncopyable& operate=(const Uncopyable&); };
(4),Classes 的設計目的如果不是作為base classes使用,或不是為了具備多態性(polymorphically),就不應該聲明virtual 析構函數。