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;
    }
  • 相关阅读:
    PHP 原型模式
    PHP 观察者模式
    PHP 策略模式
    PHP 适配器模式
    PHP static静态属性和静态方法
    PHP中this,self,parent三个关键字
    PHP 单例模式
    git修改账号密码-命令行
    微信开发SDK推荐
    Java并发编程:线程池的使用
  • 原文地址:https://www.cnblogs.com/csnd/p/12897003.html
Copyright © 2011-2022 走看看