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;
    }
  • 相关阅读:
    MySQL-基本sql命令
    Java for LeetCode 203 Remove Linked List Elements
    Java for LeetCode 202 Happy Number
    Java for LeetCode 201 Bitwise AND of Numbers Range
    Java for LeetCode 200 Number of Islands
    Java for LeetCode 199 Binary Tree Right Side View
    Java for LeetCode 198 House Robber
    Java for LeetCode 191 Number of 1 Bits
    Java for LeetCode 190 Reverse Bits
    Java for LeetCode 189 Rotate Array
  • 原文地址:https://www.cnblogs.com/csnd/p/12897003.html
Copyright © 2011-2022 走看看