为其他对象提供一种代理以控制对这个对象的访问。举个例子,工厂,代理商,客户三者,工厂(Application)不希望客户知道我的生产细节,工厂位置等等,但想客户知道我的价格,产品用途。于是派出一个代理商(agent),代理商包装工厂产品的价格,用途,功效等等、。于是客户(client)去想去买工厂的产品,不用去工厂,找代理商就可以了。。
例子很简单,中心思想:把客户需要的功能继承成一个代理类,需要什么,就去代理类去复写。。。
// 代理模式
#include "iostream"
class factory {
virtual void price() = 0;
};
class Delegate : public factory {
public:
void price() {
std::cout << factory_price + 50 << std::endl; // 代理报价
};
private:
int factory_price = 100; //工厂原价
};
class Client {
public:
Client(){
std::cout << "i want get price" << std::endl; // 客户需求
}
};
int main ()
{
Client client;
Delegate delegate;
delegate.price(); //代理商报价 完全隐藏了工厂作了什么
}