// Subject类: // 定义了RealSubject和Proxy的公用接口, // 这样就在任何使用RealSubject的地方都 // 可以使用Proxy。 class Subject { public: virtual void Request() = NULL; }; // RealSubject类: // 定义Proxy所代表的真实实体 class RealSubject : public Subject { public: void Request() { // TO-DO: } }; // Proxy类: // 保存一个引用似的代理可以访问实体, // 并提供一个与Subject的接口相同的接口, // 这样代理就可以用来代替实体。 class Proxy : public Subject { protected: RealSubject* realSubject; // 需初始化为NULL public: void Request() { if( realSubject == NULL ) { realSubject = new RealSubject(); } realSubject.Request(); } }; // 客户端代码 int main() { ... Proxy proxy = new Proxy(); proxy.Request(); ... }