十分钟学会一个设计模式---结构模式---代理模式

70 阅读1分钟
// 统一接口
class Interface {
public:
    virtual void process() = 0;

    virtual ~Interface() = default;
};

// 真实类
class RealSubject : public Interface {
public:
    void process() override {
        cout << "doing" << endl;
    }
};

// 代理类
class Proxy : public Interface {
private:
    RealSubject *realSubject;
public:
    Proxy() {
        realSubject = new RealSubject;
    }
    ~Proxy() {
        delete realSubject;
    }
    void process() override {
        cout << "before" << endl;
        realSubject->process();
        cout << "after" << endl;
    }
};

int main() {
    Interface *proxy = new Proxy();
    proxy->process();
    delete proxy;
}