Proxy模式,为其它对象提供一种代理以控制对这个对象的访问。
class Customer {
public:
Customer(int id);
virtual bool BuyLand(int acreage);
};
class Farmer: public Customer {
public:
Farmer(int id);
virtual bool BuyLand(int acreage);
};
class Proxy: public Customer
{
public:
Proxy(int id);
virtual bool BuyLand(int acreage);
private:
Farmer* farmer;
int farmerId;
};
bool Proxy::BuyLand(int acreage) {
bool ret = false;
if (this->farmer == null) {
this->farmer = new Farmer(this->farmerId);
}
// todo... 前期准备工作,调查、找地、谈合同等。成功之后,顾客可以买地
ret = this->farmer->BuyLand(acreage);
// todo... 善后工作,过户、交税等
return ret;
}
void Test() {
Customer* client = new Proxy(1);
client->BuyLand(100);
// destroy ...
}
PS. 我的设计模式系列blog, 《设计模式》专栏,通过简单的示例演示设计模式,对于初学者很容易理解入门。深入学习请看GoF的《设计模式》。