C++设计模式代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,它提供了一个代理对象来控制对另一个对象的访问。代理对象与原始对象具有相同的接口,因此客户端可以不知道代理对象的存在。以下是一份使用C++实现代理模式的代码示例:

 

```c++

#include

using namespace std;

 

// 访问真正对象的公共接口

class Subject {

public:

    virtual void request() = 0;

};

 

// 真正对象

class RealSubject : public Subject {

public:

    void request() {

        cout << "Real Subject Request" << endl;

    }

};

 

// 代理对象

class Proxy : public Subject {

public:

    Proxy() {

        m_subject = new RealSubject();

    }

    void request() {

        if (m_subject != nullptr) {

            m_subject->request();

        }

    }

private:

    RealSubject* m_subject;

};

 

int main() {

    Proxy* proxy = new Proxy();

    proxy->request();

    delete proxy;

    return 0;

}

```

 

在上面的代码中,我们定义了一个公共接口 Subject,其实现类 RealSubject 表示具体的真实对象。我们还定义了一个代理对象 Proxy,该对象包含了实际对象 RealSubject 并实现了相同的接口。在代理对象的请求方法中,我们执行了一些额外的操作并调用了真实对象的请求方法。在主函数中,我们实例化了代理对象并调用了其请求方法。

 

使用代理模式可以隐藏真实对象的复杂性,并提供更加简单的接口。它也可以实现对象之间的松耦合,使得我们可以独立地改变真实对象的实现,而不必影响到客户端。此外,在一些需要进行监控或统计的场景下,我们还可以使用代理对象来记录操作日志、缓存请求结果等。

你可能感兴趣的:(c++)