代理模式

 

class Service {
public:
    int QueryData() {
        // 服务端,查询数据,订阅数据,修改数据等
        cout << "this is service data" << endl;
        return 0;
    }
};

class CProxy {
private:
    CProxy() {
    }
    static CProxy* Instance;
    Service m_server;
public:
    static CProxy* GetInstance() {
        if (Instance == nullptr) {
            Instance = new CProxy();
        }
        return Instance;
    }
    static CProxy& GetProxy() {
        static CProxy single;
        return single;
    }

    int QueryData() {
        // 代理访问服务端
        m_server.QueryData();
        return 0;
    }
};

CProxy* CProxy::Instance = nullptr;

class Client {
public:
    void ShowData()
    {
        CProxy* px = CProxy::GetInstance();
        px->QueryData();
        CProxy prx = CProxy::GetProxy();
        prx.QueryData();
    }
};


TEST(Proxy, Proxy1)
{
    Client cl;
    cl.ShowData();
}

 

posted on 2022-05-16 21:35  蜀山菜鸟  阅读(24)  评论(0)    收藏  举报