C语言和设计模式(适配器模式)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
现在的生活当中,我们离不开各种电子工具。什么笔记本电脑、手机、mp4啊,都离不开充电。既然是充电,那么就需要用到充电器。其实从根本上来说,充电器就是一个个普通的适配器。什么叫适配器呢,就是把220v、50hz的交流电压编程5~12v的直流电压。充电器就干了这么一件事情。
那么,这样的一个充电适配器,我们应该怎么用c++描述呢?
class voltage_12v
{
public:
voltage_12v() {}
virtual ~voltage_12v() {}
virtual void request() {}
};
class v220_to_v12
{
public:
v220_to_v12() {}
~v220_to_v12() {}
void voltage_transform_process() {}
};
class adapter: public voltage_12v
{
v220_to_v12* pAdaptee;
public:
adapter() {}
~adapter() {}
void request()
{
pAdaptee->voltage_transform_process();
}
};
通过上面的代码,我们其实可以这样理解。类voltage_12v表示我们的最终目的就是为了获得一个12v的直流电压。当然获得12v可以有很多的方法,利用适配器转换仅仅是其中的一个方法。adapter表示适配器,它自己不能实现220v到12v的转换工作,所以需要调用类v220_to_v12的转换函数。所以,我们利用adapter获得12v的过程,其实就是调用v220_to_v12函数的过程。
不过,既然我们的主题是用c语言来编写适配器模式,那么我们就要实现最初的目标。这其实也不难,关键一步就是定义一个Adapter的数据结构。然后把所有的Adapter工作都由Adaptee来做,就是这么简单。不知我说明白了没有?
typdef struct _Adaptee
{
void (*real_process)(struct _Adaptee* pAdaptee);
}Adaptee;
typedef struct _Adapter
{
void* pAdaptee;
void (*transform_process)(struct _Adapter* pAdapter);
}Adapter;
C语言和设计模式(适配器模式)相关推荐
- java设计模式适配器模式_Java解释器设计模式
java设计模式适配器模式 Interpreter design pattern is one of the behavioral design pattern. Interpreter patter ...
- 【设计模式】的C语言的设计模式及其应用
转自https://blog.csdn.net/devcloud/article/details/95615621 [摘要] 软件编写模式是开发过程中的重要经验总结.灵活运用设计模式,一方面利于我们编 ...
- C语言和设计模式大全(附代码示例)
文章目录 C语言和设计模式(之单件模式) C语言和设计模式(之原型模式) C语言和设计模式(之组合模式) C语言和设计模式(之模板模式) C语言和设计模式(工厂模式) C语言和设计模式(责任链模式) ...
- Python设计模式-适配器模式
Python设计模式-适配器模式 基于Python3.5.2,代码如下 #coding:utf-8class ACpnStaff:name = ""id = "" ...
- Java | 设计模式-适配器模式
继代理模式后又来到适配器模式啦,想看之前的也有哦.持续更新中哦.让我们一起加油吧兄弟们,干他. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 你好,如果喜欢,请一起坚持!! ...
- java设计模式适配器模式_Java中的适配器设计模式
java设计模式适配器模式 适配器设计模式是一种结构设计模式 ,可以帮助我们连接到通过不同接口公开相似功能的旧版或第三方代码. 适配器的现实世界是我们用来将USB电缆连接到以太网端口的类比. 在设计一 ...
- 设计模式适配器模式_适配器设计模式示例
设计模式适配器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要 ...
- 设计模式适配器模式_21世纪的设计模式:适配器模式
设计模式适配器模式 这是我的演讲的第三部分," 21世纪的设计模式" . 适配器模式桥接世界. 在一个世界中,我们有一个概念的界面. 在另一个世界,我们有不同的界面. 这两个接口有 ...
- elm具体实现过程_函数式编程中的战斗机(二)---elm语言MUV设计模式应用实例...
1 elm语言设计模式的特点 1.1 面向对象设计模式的特点 每种编程语言都有其独特的语法和优缺点,从而导致与众不同的设计模式和固定架构.面向对象编程因其竭力接近和模拟现实世界的多态和继承,导致面向对 ...
最新文章
- 计算机网络实验可变长子网掩码,计算机网络实验3-子网掩码与划分子网实验报告.docx...
- 国产的markdown 语法的思维导图和大纲工具!
- Spring Boot并不重复“造轮子”
- VSCode生成.vue模版
- 调试U-Boot笔记(三)
- 宏块帧内预测的具体过程
- ai钢笔工具怎么描线_AI中钢笔工具绘图的实战操作技巧!(干货满满)
- MySQL GTID复制Slave跳过错误事务Id以及复制排错问题总结
- (转)基于MVC4+EasyUI的Web开发框架经验总结(13)--DataGrid控件实现自动适应宽带高度...
- mybatis分页应用
- HTML知识积累及实践(二) - 标签样式
- WordPress 5.2 Beta 1 发布,将于4月30日推出正式版
- 深入理解jQuery中的事件冒泡
- QTP/UFT11.5官方下载与安装教程及汉化
- GPS固定数据输出语句($GPGGA)
- DOS处理 CMD提速 BAT恶搞
- 贝叶斯公式理解与应用
- c++求余弦的泰勒展开式
- STC15W201S串口蓝牙通信PWM控制RGB彩灯
- [乡土民间故事_徐苟三传奇]第廿三回_吃蒸肉财主受捉弄
热门文章
- ADF12C+GLASSFISH4.1配置数据源
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- JFrame 跳转之后自动关闭窗口 dispose()
- CentOS(RedHat)命令行永久修改IP地址、网关、DNS
- ArcMap增加图标
- nginx普通配置/负载均衡配置/ssl/https配置
- kubernetes资源管理
- Unix系统编程()发送信号kill
- .net连接ORACLE数据库
- C++_选择结构_循环结构_for循环_敲桌子案例_嵌套循环_乘法口诀案例_跳转语句break---C++语言工作笔记018