设计模式C++版:第七式代理模式
来源:互联网 发布:中万网络靠谱吗 编辑:程序博客网 时间:2024/06/12 00:15
开始代理模式以前我们先说一下什么是代理。这个词想必生活中听过见过的太多,比如经销商的烟酒代理,洗漱用品代理等,其实经销代理也就是我们常说的批发商,他们从厂家那里拿货,而后卖给实际用户。
经销商的代理好处是什么,为什么厂家不直接卖给用户赚钱呢?
比如说我们常用的笤帚什么的,一家厂家的用户全体是全国乃至全世界所有的用户,它不可能和数以百万乃至千万计中的每一个客户打交道。于是每个地区有一个批发商,批发商和客户打交道,而它只需要和批发商打交道就可以了。全国的省部级别的地方,就三十多个,这样他处理起来是不是一下子方便了很多。这种代理是一种树形的,组织扩散放大型的代理。
现在又出现了互联网时代的代理——电商,每一家电商都可以代理很多的产品,而后通过自家平台直接和客户打交道。这种是反向树,一种集中式的代理。这种代理容易出现客大欺店的情况。在编程上来看,就是一旦这个集中式的中间代理挂掉,所有的服务和用户全部失去联系。风险较大。
现在用编程的角度来简单定义一下代理:为一个对象提供对另外一个对象的访问或控制的行为即为代理。
下面是个简单的示例:
#include<iostream>using namespace std;class Interface{public:virtual void SellDolls(){};virtual void SellFlowers(){};};class Company :public Interface{public:Company(const string *name){customername = name;}virtual void SellDolls(){ cout<< "把布偶卖给"<<customername->c_str()<< endl; }virtual void SellFlowers(){ cout<<"把花卖给" <<customername->c_str() << endl; }private:const string* customername;};class Proxy :public Interface{public:Proxy (const string* customername);~Proxy();virtual void SellDolls(){m_Company->SellDolls();}virtual void SellFlowers(){m_Company->SellFlowers();}private:Company *m_Company;};Proxy::Proxy(const string *grilname) :m_Company(nullptr){m_Company = new Company(grilname);}Proxy::~Proxy(){if (m_Company!=nullptr){delete m_Company;}}int main(){const string customername = "玛利亚";Proxy proxy(&customername);proxy.SellDolls();proxy.SellFlowers();return 0;}
运行结果如下:
另外提个问题,如果有一个程序组件作为客户端和服务端的中间件,帮助转发消息,是不是代理呢。答案是,是的。
0 0
- 设计模式C++版:第七式代理模式
- 大话设计模式java版本 第七章 代理模式
- 第七章 代理模式
- 第七章 代理模式
- 第七话-代理模式
- 设计模式之代理模式(C++)
- 设计模式--【代理模式】
- 设计模式:代理模式
- 设计模式--代理模式
- 设计模式---代理模式
- 设计模式-代理模式
- 设计模式---代理模式
- 设计模式 代理模式
- 设计模式-【代理模式】
- 设计模式-代理模式
- 设计模式----代理模式
- 设计模式-代理模式
- 设计模式---代理模式
- 简单数据采集(http://blog.jobbole.com/tag/php/)
- 【JZOJ4743】【NOIP2016提高A组模拟9.2】积木
- java基础-初始化
- java基础-多态
- python核心编程学习笔记-2016-09-03-01-图形化用户界面编程(二)
- 设计模式C++版:第七式代理模式
- typedef的用法总结
- HDU 1421 搬寝室
- 关于MongoDB分组统计的问题
- java基础-泛型信息
- jQuery选择器总结
- file_put_contents
- brew update 出错(已解决)
- LeetCOde 344. Reverse String