【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

代理模式是一种比较有意思的设计模式。它的基本思路也不复杂。举个例子来说,以前在学校上网的时候,并不是每一台pc都有上网的权限的。比如说,现在有pc1、pc2、pc3,但是只有pc1有上网权限,但是pc2、pc3也想上网,此时应该怎么办呢?

此时,我们需要做的就是在pc1上开启代理软件,同时把pc2、pc3的IE代理指向pc1即可。这个时候,如果pc2或者pc3想上网,那么报文会先指向pc1,然后pc1把Internet传回的报文再发给pc2或者pc3。这样一个代理的过程就完成了整个的上网过程。

在说明完整的过程之后,我们可以考虑一下软件应该怎么编写呢?

typedef struct _PC_Client
{void (*request)();
}PC_Client;void ftp_request()
{printf("request from ftp!\n");
}void http_request()
{printf("request from http!\n");
}void smtp_request()
{printf("request from smtp!\n");
}

这个时候,代理的操作应该怎么写呢?怎么处理来自各个协议的请求呢?

typedef struct _Proxy
{PC_Client* pClient;
}Proxy;void process(Proxy* pProxy)
{assert(NULL != pProxy);pProxy->pClient->request();
}

C语言和设计模式(代理模式)相关推荐

  1. Python设计模式-代理模式

    Python设计模式-代理模式 基于Python3.5.2,代码如下 #coding:utf-8info_struct = dict() info_struct["addr"] = ...

  2. Android常见设计模式——代理模式(Proxy Pattern)(二)

    文章目录 1. 前言 2. 远程代理(Remote Proxy) 3. 后记 1. 前言 在上篇Android常见设计模式--代理模式(Proxy Pattern)中基本上知道了什么是代理模式,以及对 ...

  3. Java设计模式(代理模式-模板方法模式-命令模式)

    Java设计模式Ⅴ 1.代理模式 1.1 代理模式概述 1.2 静态代理 1.2.1 静态代理概述 1.2.2 代码理解 1.3 动态代理之JDK代理 1.3.1 动态代理之JDK代理概述 1.3.2 ...

  4. 设计模式——代理模式

    设计模式--代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能 ...

  5. 23种设计模式----------代理模式(一)

    代理模式也叫委托模式. 代理模式定义:对其他对象提供一种代理从而控制对这个对象的访问.就是,代理类 代理 被代理类,来执行被代理类里的方法. 一般情况下,代理模式化有三个角色. 1,抽象的主题类(或者 ...

  6. java设计模式代理模式_Java中的代理设计模式

    java设计模式代理模式 代理对象或代理对象为另一个对象提供占位符,以控制对该对象的访问. 代理充当原始对象的轻量级版本或简化版本. 它支持与原始对象相同的操作,但可以将那些请求委托给原始对象以实现它 ...

  7. 第四章 Caché 设计模式 代理模式

    文章目录 第四章 Caché 设计模式 代理模式 定义 类型 使用场景 优点 缺点 结构图 完整示例 抽象主题类 真实主题类 代理类 对象类 调用 思考 第四章 Caché 设计模式 代理模式 定义 ...

  8. sheng的学习笔记-设计模式-代理模式

    原理图: 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问.这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. 至少在以下集中情况下可以用 ...

  9. 设计模式-代理模式(Proxy Pattern)

    设计模式-代理模式(Proxy Pattern) 文章目录 设计模式-代理模式(Proxy Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.小结 六.动态代理 ...

  10. C语言实现设计模式—模板模式

    文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...

最新文章

  1. 土壤微生态文献包免费领取 | 150篇近两年高影响因子土壤微生态相关文章
  2. ArduinoYun教程之ArduinoYun硬件介绍
  3. PostgreSQL的那点事儿
  4. unfold3d自动展uv_Maya2018超实用建模及UV展开功能视频教程
  5. python自动化办公:邮件篇 (定时邮件问候女票so easy)
  6. 点击率预估算法:FM与FFM
  7. 手把手教你编写Logstash插件
  8. CentOS7安装Nagios
  9. 什么叫python脚本_什么是python的自省
  10. Web编程学习一: 使用JSF来创建Web应用
  11. 海思平台35xx系列sensor不出图问题排查方法(新手来看)
  12. 理解Andriod 硬件加速
  13. 十代主板改win7_技嘉B460主板UEFI+GPT装win7|10代CPU装win7 Bios设置
  14. 「Medical Image Analysis」Note on 3D U-Net
  15. 关于认知升级的思考-认知升级是深度思考、认知升级是探索未知
  16. 前期易语言编程作品收录|DKP系统|
  17. php mud游戏源码,从零开始构建PHP版mud游戏(三)
  18. 创建一个 PHP 程序来扫描主机名上的开放端口。
  19. 【蓝桥杯】【啊哈!算法】冒泡排序
  20. 前端性能优化常用代码

热门文章

  1. /boot 目录文件丢失修复记录
  2. JavaPoet 开源项目使用
  3. iOS开发之数据存储之Preference(偏好设置)
  4. How to Prevent the next Heartbleed
  5. grub的说明与配置方法
  6. Linux常用命令集锦(一)
  7. Oracle 10g 高级安装图文教程(一)
  8. 详解MariaDB数据库的事务
  9. Unity3D SceneView Camera
  10. C# A potentially dangerous 问题解决