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;
}
posted @ 2018-08-24 21:38  倚剑问天  阅读(185)  评论(0编辑  收藏  举报