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;
}
本文为博主总结文章,欢迎转载,请注明出处。