C语言和设计模式(代理模式)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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语言和设计模式(代理模式)相关推荐
- Python设计模式-代理模式
Python设计模式-代理模式 基于Python3.5.2,代码如下 #coding:utf-8info_struct = dict() info_struct["addr"] = ...
- Android常见设计模式——代理模式(Proxy Pattern)(二)
文章目录 1. 前言 2. 远程代理(Remote Proxy) 3. 后记 1. 前言 在上篇Android常见设计模式--代理模式(Proxy Pattern)中基本上知道了什么是代理模式,以及对 ...
- Java设计模式(代理模式-模板方法模式-命令模式)
Java设计模式Ⅴ 1.代理模式 1.1 代理模式概述 1.2 静态代理 1.2.1 静态代理概述 1.2.2 代码理解 1.3 动态代理之JDK代理 1.3.1 动态代理之JDK代理概述 1.3.2 ...
- 设计模式——代理模式
设计模式--代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能 ...
- 23种设计模式----------代理模式(一)
代理模式也叫委托模式. 代理模式定义:对其他对象提供一种代理从而控制对这个对象的访问.就是,代理类 代理 被代理类,来执行被代理类里的方法. 一般情况下,代理模式化有三个角色. 1,抽象的主题类(或者 ...
- java设计模式代理模式_Java中的代理设计模式
java设计模式代理模式 代理对象或代理对象为另一个对象提供占位符,以控制对该对象的访问. 代理充当原始对象的轻量级版本或简化版本. 它支持与原始对象相同的操作,但可以将那些请求委托给原始对象以实现它 ...
- 第四章 Caché 设计模式 代理模式
文章目录 第四章 Caché 设计模式 代理模式 定义 类型 使用场景 优点 缺点 结构图 完整示例 抽象主题类 真实主题类 代理类 对象类 调用 思考 第四章 Caché 设计模式 代理模式 定义 ...
- sheng的学习笔记-设计模式-代理模式
原理图: 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问.这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. 至少在以下集中情况下可以用 ...
- 设计模式-代理模式(Proxy Pattern)
设计模式-代理模式(Proxy Pattern) 文章目录 设计模式-代理模式(Proxy Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.小结 六.动态代理 ...
- C语言实现设计模式—模板模式
文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...
最新文章
- 土壤微生态文献包免费领取 | 150篇近两年高影响因子土壤微生态相关文章
- ArduinoYun教程之ArduinoYun硬件介绍
- PostgreSQL的那点事儿
- unfold3d自动展uv_Maya2018超实用建模及UV展开功能视频教程
- python自动化办公:邮件篇 (定时邮件问候女票so easy)
- 点击率预估算法:FM与FFM
- 手把手教你编写Logstash插件
- CentOS7安装Nagios
- 什么叫python脚本_什么是python的自省
- Web编程学习一: 使用JSF来创建Web应用
- 海思平台35xx系列sensor不出图问题排查方法(新手来看)
- 理解Andriod 硬件加速
- 十代主板改win7_技嘉B460主板UEFI+GPT装win7|10代CPU装win7 Bios设置
- 「Medical Image Analysis」Note on 3D U-Net
- 关于认知升级的思考-认知升级是深度思考、认知升级是探索未知
- 前期易语言编程作品收录|DKP系统|
- php mud游戏源码,从零开始构建PHP版mud游戏(三)
- 创建一个 PHP 程序来扫描主机名上的开放端口。
- 【蓝桥杯】【啊哈!算法】冒泡排序
- 前端性能优化常用代码