// 定义:为其他对象提供一种代理以控制这个对象的访问
//
// 模式举例:各大技校在个小县城招生代理(虽然学生是在代理处
// 报的名,代理最终还是会在学校招生处帮你报名)
//
// 模式特点:代理类和真正干活的类继承自同一接口
//
// 模式知识点:代理模式分为四大类,远程代理,虚代理,保护代理,智能引用
//
//
#include<iostream>
using namespace std;
class IFactory
{
public:
virtual void makeProduct()=0;
};
class RealFactory : public IFactory
{
public:
virtual void makeProduct()
{
cout << "make product";
}
};
//是构造函数初始化私有成员还是留有接口?
class ProxyFactory : public IFactory
{
public:
ProxyFactory(IFactory* factory)
{
m_factory = factory;
}
virtual void makeProduct()
{
m_factory->makeProduct();
}
private:
IFactory * m_factory;
};
int main()
{
IFactory * factory = new ProxyFactory(new RealFactory);
factory->makeProduct();
return 0;
}