C++ 代理模式解析

1,555 阅读1分钟

C++ 代理模式解析

代理模式概念

  • 代理模式为另一个对象提供一个替身或者占位符以控制对这个对象的访问

代理模式实例

  • 以最简单的代课来讲,现在学校代课很常见了,主要逻辑是:代课的学生收取代课费,然后替那个人代课上课签到。

用代理模式来实现这个逻辑,就可以这么表示

头文件:

#include "stdafx.h"
using namespace std;

//学生基类
class Student
{
public:
	virtual void action() = 0;
};

//需要代课的学生
class SubstituteStudent:public Student
{
public:
	void action()override;
};

//代理学生类,负责帮忙代课
class ProxyStudent:public Student
{
public:
	ProxyStudent(Student * cur_Student);
	void action()override;
private:
	Student * m_pStudent;
};

实现:

// ProxyMode.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "ProxyMode.h"

using  namespace std;

void SubstituteStudent::action()
{
	std::cout << "上课签到" << endl;
}

ProxyStudent::ProxyStudent(Student * cur_Student)
{
	m_pStudent = cur_Student;
}

void ProxyStudent::action()
{
	std::cout << "收取代课费" << endl;
	m_pStudent->action();
}

int _tmain(int argc, _TCHAR* argv[])
{
	Student * cur_SubStudent = new SubstituteStudent();
	ProxyStudent * cur_ProStudent = new ProxyStudent(cur_SubStudent);
	cur_ProStudent->action();
	delete cur_ProStudent;
	delete cur_SubStudent;
	system("pause");
	return 0;
}


运行结果: