<aside> 💡

代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问

</aside>

结构图

image.png

应用场景

题目

https://kamacoder.com/problempage.php?pid=1088

#include <iostream>
using namespace std;

// 抽象接口类,真实实体和代理类的共用接口
class Subject{
public:
    virtual void buyHouse(int area) = 0;
};

// 真实实体——买房的小明
class Xiaomin: public Subject{
public:
    void buyHouse(int area) override {
        cout << "YES" << endl;
    }
};

// 代理类
class Proxy: public Subject{
public:
    // 代理执行筛选房源的工作
    void buyHouse(int area) override {
        if(area > 100){
            xiaomin.buyHouse(area);
        }else{
            cout << "NO" << endl;
        }
    }

private:
    Xiaomin xiaomin;
};

int main(){
    int n;
    cin >> n;
    for(int i = 0; i < n; ++i){
        int area;
        cin >> area;
        Proxy* proxy = new Proxy();
        proxy->buyHouse(area);
        delete proxy;
    }
    return 0;
}