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;
    }
  • 相关阅读:
    ElasticSearch : APT-GET安装方式
    python__基础 : 多继承中方法的调用顺序 __mro__方法
    TypeScript : 语法及特性
    Spring : JDBC模板, 事务和测试
    数据库 : 事物以及隔离性导致的问题
    MySQL数据库 : 函数和存储过程
    Java : java基础(6) 反射与枚举
    Java : java基础(5) Socket网络编程
    Java : java基础(4) 线程
    Java : java基础(3) IO流
  • 原文地址:https://www.cnblogs.com/csnd/p/12897003.html
Copyright © 2011-2022 走看看