代理模式 C++ 实现

2014-11-24 00:59:35 · 作者: · 浏览: 3

[cpp]
#include
#include
#include

using namespace std;
/*
代理模式 :追女生问题(大话设计模式中的案例)
*/

/*共同的接口*/

class givegift
{ public:
virtual void givedolls() = 0;
virtual void giveflowers() = 0;
virtual void givechocolate() = 0;
};

class schoolgirl
{
private:
string name;
public:
void set_name(string name)
{
this->name = name;
}

string get_name()
{
return name;
}
};
// 追求者
class pursuit: public givegift
{
schoolgirl mm;
public:
pursuit(schoolgirl mm)
{
this->mm = mm;
}

void givedolls()
{
cout < }

void giveflowers()
{
cout < }

void givechocolate()
{
cout < }
};
//代理
class proxy: givegift
{
pursuit *gg;
public:
proxy(schoolgirl *mm)
{
gg = new pursuit(*mm);
}

void givedolls()
{
gg->givedolls();
}

void giveflowers()
{
gg->giveflowers();
}

void givechocolate()
{
gg->givechocolate();
}
};
//相当于客户端
int main()
{
schoolgirl *jiaojiao = new schoolgirl();
jiaojiao->set_name("李娇娇:");

proxy *daili = new proxy(jiaojiao);

daili->givedolls();
daili->giveflowers();
daili->givechocolate();
system("pause");
return 0;
}

#include
#include
#include

using namespace std;
/*
代理模式 :追女生问题(大话设计模式中的案例)
*/

/*共同的接口*/

class givegift
{ public:
virtual void givedolls() = 0;
virtual void giveflowers() = 0;
virtual void givechocolate() = 0;
};

class schoolgirl
{
private:
string name;
public:
void set_name(string name)
{
this->name = name;
}

string get_name()
{
return name;
}
};
// 追求者
class pursuit: public givegift
{
schoolgirl mm;
public:
pursuit(schoolgirl mm)
{
this->mm = mm;
}

void givedolls()
{
cout < }

void giveflowers()
{
cout < }

void givechocolate()
{
cout < }
};
//代理
class proxy: givegift
{
pursuit *gg;
public:
proxy(schoolgirl *mm)
{
gg = new pursuit(*mm);
}

void givedolls()
{
gg->givedolls();
}

void giveflowers()
{
gg->giveflowers();
}

void givechocolate()
{
gg->givechocolate();
}
};
//相当于客户端
int main()
{
schoolgirl *jiaojiao = new schoolgirl();
jiaojiao->set_name("李娇娇:");

proxy *daili = new proxy(jiaojiao);

daili->givedolls();
daili->giveflowers();
daili->givechocolate();
system("pause");
return 0;
}

总结:

这个模式就是用代理者将对代理者进行包装,并且继承共同的接口;其中GoF 对其定义是:

为其它对象提供一种代理以控制对这个对象的访问。