代理模式(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&);
};
(3),polymorphic base classes 应该声明一个virtual析构函数。如果class带有任何virtual函数,它就应该拥有一个virtual析构函数
(4),Classes 的设计目的如果不是作为base classes使用,或不是为了具备多态性(polymorphically),就不应该声明virtual 析构函数。