博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言和设计模式(代理模式)
阅读量:3712 次
发布时间:2019-05-21

本文共 741 字,大约阅读时间需要 2 分钟。

文章目录

一句话理解

为其他对象提供一种代理以控制对这个对象的访问

在这里插入图片描述
现在有了游戏代理,你是这样玩游戏:
在这里插入图片描述

举例

 代理模式是一种比较有意思的设计模式。它的基本思路也不复杂。举个例子来说,以前在学校上网的时候,并不是每一台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();}

转载地址:http://chdjn.baihongyu.com/

你可能感兴趣的文章
数据结构与算法
查看>>
C/C++总结
查看>>
计算机组成原理总结
查看>>
1.3 QT界面美化
查看>>
2 QT数据传输(MVC)
查看>>
3.QT逻辑交互(信号槽)
查看>>
4 QT功能模块
查看>>
(4)功能模块(文件)
查看>>
@Component 和 @Bean 的区别
查看>>
jmeter模拟不同ip对接口进行请求访问
查看>>
javaWeb从入门到放弃——Http基础知识
查看>>
依赖注入
查看>>
Springboot 自动装配原理2
查看>>
Springboot 自动装配原理1
查看>>
Springboot 自动装配流程图详解
查看>>
Springboot 整合mybatis
查看>>
Springboot+mongodb本地环境正常,生产环境报错{java.lang.NoClassDefFoundError: jdk/net/ExtendedSocketOptions}
查看>>
你真的知道get方法与post方法的区别吗?论get方法与post方法上传下载文件的区别
查看>>
swagger配置及升级版swagger-bootstrap-ui配置+访问账号密码登录限制
查看>>
网易云Api,轻松获取音乐数据
查看>>