C++设计模式 ==> 代理模式

版权声明:本文为博主总结文章,欢迎转载,请注明出处。 https://blog.csdn.net/PeterZ1997/article/details/81597768

简介

代理模式,顾名思义,就是让代理替代真实事物做事情,且结果是是等效的,就相当于现实世界中的中介。在设计模式中,代理模式需要使用代理类来实例化真实事物类的对象,然后可以创建代理对象代替真实对象处理一些事情。代理模式可以起到隔离真实事物类的作用,在网络通信等后面有诸多应用
下面我们使用一个简单的代码样例来演示一下代理模式的工作过程:假设有一位小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;
}
阅读更多

没有更多推荐了,返回首页