- 优点:
职责清晰:真实角色就是实现实际的业务逻辑,不关心其他非本职责的事务,通过后期的代理完成一件事务,附带的结果就是编程简介清晰。
高扩展性:具体主题角色可变。 - 缺点:
这种模式引入了另一个抽象层,这有时可能是一个问题。如果真实主题被某些客户端直接访问,并且其中一些客户端可能访问代理类,这可能会导致不同的行为。
由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
实现代理模式需要额外的工作,有些代理模式的实现非常复杂
#include <iostream>
using namespace std;
class Girl
{
public:
Girl(string name)
{
m_sName = name;
}
string getName()
{
return m_sName;
}
private:
string m_sName;
};
class Boy
{
public:
void giveflower(Girl *g)
{
cout << g->getName().c_str()<< "LOVE LOVE LOVE" << endl;
}
};
class Proxy
{
public:
Proxy(Boy *by, Girl *g)
{
m_boy = by;
m_girl = g;
}
void giveflower()
{
m_boy->giveflower(m_girl);
}
private:
Boy *m_boy;
Girl*m_girl;
};
int main()
{
Girl *g = new Girl("小张");
Boy *boy = new Boy;
Proxy *pro = new Proxy(boy, g);
pro->giveflower();
return 0;
}
可参考:https://blog.csdn.net/a369189453/article/details/81275740