古月不傲 发表于 2020-11-16 12:50

proxy模式

本帖最后由 古月不傲 于 2020-11-16 12:52 编辑

#include <iostream>
#include <arpa/inet.h>
#include <sys/socket.h>

using namespace std;

// proxy模式
namespace proxy_pattern
{
// 访问服务
class abstract_access_service
{
public:
    virtual void access_web(sockaddr &addr) = 0;
    virtual ~abstract_access_service() {}
};

// 访问油管
class access_youtube : public abstract_access_service
{
public:
    virtual void access_web(sockaddr &addr) override {
      printf("访问油管\n");
    }
};

// proxy
class proxy : public abstract_access_service
{
public:
    proxy(abstract_access_service *ab) : m_ab(ab) {}
    virtual void access_web(sockaddr &addr) override {
      // can do something;
      this->m_ab->access_web(addr);
      // can do something;
    }
private:
    abstract_access_service *m_ab;
};
}

// 可以看出proxy模式和策略模式的区别 proxy模式需要继承 策略不需要继承 因此细节处理就不用
// proxy模式最大的作用就是解耦合 中途可以改变一些行为 而不必修改真实的类
int main(void)
{
    using namespace proxy_pattern;
    abstract_access_service *youtube = new access_youtube;
    abstract_access_service *p = new proxy(youtube);
    sockaddr addr;
    p->access_web(addr);

    delete p;
    delete youtube;

    return 0;
}
页: [1]
查看完整版本: proxy模式