zoukankan      html  css  js  c++  java
  • C++设计模式 ==> 代理模式

    简介

    代理模式,顾名思义,就是让代理替代真实事物做事情,且结果是是等效的,就相当于现实世界中的中介。在设计模式中,代理模式需要使用代理类来实例化真实事物类的对象,然后可以创建代理对象代替真实对象处理一些事情。代理模式可以起到隔离真实事物类的作用,在网络通信等后面有诸多应用
    下面我们使用一个简单的代码样例来演示一下代理模式的工作过程:假设有一位小A(RealPersuitePeople类)想追求小红,但他比较羞涩,所以委托类代理小B(PersuiteProxy类)处理这件事。

    图示

    代理模式图示

    代码实现

    ////////////////////////////
    //
    //  @Author : PeterZheng
    //  @FileName : ProxyModeDefine.h
    //  @Date : 2018-08-12 0:17
    //
    ////////////////////////////
    
    #pragma once
    #ifndef PMDINCLUDE
    #define PMDINCLUDE
    
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <string>
    #include <tchar.h>
    
    #endif
    
    //抽象方法类
    class PersuitPeople
    {
    public:
        std::wstring mm;
        PersuitPeople(std::wstring lmm) :mm(lmm) {}
        virtual void persuite() = 0;
    };
    
    //真实操作者类(小A)
    class RealPersuitPeople : public PersuitPeople
    {
    public:
        RealPersuitPeople(std::wstring lmm) :PersuitPeople(lmm) {}
        virtual void persuite()
        {
            std::wcout << _T("喜欢你") + this->mm << std::endl;
            return;
        }
    };
    
    //代理类(小B)
    class PersuiteProxy :public PersuitPeople
    {
    private:
        RealPersuitPeople * rpp = NULL;
    public:
        PersuiteProxy(std::wstring lmm) :PersuitPeople(lmm) {};
        virtual void persuite()
        {
            rpp = new RealPersuitPeople(this->mm);
            rpp->persuite();
            return;
        }
    };
    
    ////////////////////////////
    //
    //  @Author : PeterZheng
    //  @FileName : ProxyDemo.cpp
    //  @Date : 2018-08-12 0:33
    //
    ////////////////////////////
    
    #include "ProxyModeDefine.h"
    
    using namespace std;
    
    int _tmain(void)
    {
        wcout.imbue(std::locale("chs"));
        PersuiteProxy *pp = new PersuiteProxy(_T("小红"));
        pp->persuite();
        system("pause");
        return 0;
    }
  • 相关阅读:
    poi 导出文件
    获取哪一年 周一的所有日期
    线程池配置
    mybatis基于唯一索引插入或更新
    mongoTemplate关联查询
    cas认证机制
    SpringBoot服务
    HashMap的底层实现
    maven仓库提示“Downloading: http://repo.maven.apache.org/maven2/”
    Tomcat安装SSL证书
  • 原文地址:https://www.cnblogs.com/csnd/p/12897003.html
Copyright © 2011-2022 走看看