C语言版:装饰器模式
C语言装饰器模式实现
C语言是面向过程的一门语言,更注重过程,是一个一个函数进行一个一个去执行 是这么一个过程,那么我们怎样来实现用C语言来实现类似装饰器模式的效果呢?
每个函数是一个单独的过程,这个函数编写之后,我们可以为这个函数添加新的功能或者逻辑而不改动原函数,这就实现了类似装饰器的效果了。C语言中指针很强大,任何定义的函数都可以用函数指针指向函数。所以可用通函数指针将函数传到另一个函数中。C语言中多态的形式也是通过函数指针来类似实现的。
C语言装饰器模式代码展示
实际上就是在通过函数指针执行函数的前后执行执行装饰器的内容
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//2000年写的函数
int add(int num1,int num2)
{int sum = num1 + num2;printf("%d+%d=%d\n", num1, num2, sum);return sum;
}
//2000年写的函数
int sub(int num1,int num2)
{int sub = num1 - num2;printf("%d-%d=%d\n", num1, num2, sub);return sub;
}
//可以继续拓展其他函数
//2008年写的函数
int mul(int num1, int num2)
{int mul = num1* num2;printf("%d*%d=%d\n", num1, num2, mul);return mul;
}/*
使用装饰器模式 在C语言中可以实现类似多态的效果
可以很方便的进行拓展
这个函数 又被称为架构函数
*/
void wapper(int(*func)(int,int),int num1,int num2)
{printf("进入装饰器\n");//类似回调函数嘛,函数前后 可以进行装饰或者其他逻辑处理func(num1, num2);printf("走出装饰器\n");
}int main(int argc, char *argv[])
{wapper(add, 20, 30);wapper(sub, 20, 30);wapper(mul, 20, 30);return 0;
}
C语言装饰器模式运行结果
C语言版:装饰器模式相关推荐
- 装饰器模式代码举例(java语言版)
前言:为了解决子类膨胀问题,把被装饰的以关联的方式放入装饰类里面,装饰类添加新的功能,如果需要再扩展新功能的时候,那么可以考虑直接继承装饰类.下面是一个画圆的例子(其实ServletRequest.H ...
- go设计模式之装饰器模式
go设计模式之装饰器模式 再写这篇文章时,我已经看了很多其他人发表的类似文章,大概看了这么多吧. 亓斌的设计模式-装饰者模式(Go语言描述) jeanphorn的Golang设计模式之装饰模式 七八月 ...
- python版:装饰器模式
装饰器模式介绍 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 装饰器模式实现 设计模式只是一种思想与语言无关,设 ...
- c语言装饰,C/C++知识点之装饰器模式(Decorator) C++
本文主要向大家介绍了 C/C++知识点之装饰器模式(Decorator) C++,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助.装饰器模式是比较常用的一种设计模式,Python中就 ...
- 漫画设计模式:什么是 “装饰器模式” ?
作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui) ----- 第二天 ----- ------------ 装饰器模式都包含哪些核心角色呢? 1. Compone ...
- 设计模式学习----装饰器模式
这两天本来是自在学习java collection Framework的Fail Fast底层机制,看到核心的部分时,突然意识到设计模式的问题,上大学到现在我还没有真正理解过设计模式的概念,于是用了大 ...
- 设计模式学习(三)——装饰器模式
前言 距离上一次正儿八经地写随笔已经有一段时间了,虽然2月10号有一篇关于泛型的小记,但是其实只是简单地将自己的学习代码贴上来,为了方便后续使用时查阅,并没有多少文字和理解感悟.之所以在今天觉得有必要 ...
- python 装饰器 继承_Python设计模式之装饰器模式
装饰器模式 无论何时我们想对一个对象添加额外的功能,都有下面这些不同的可选方法. 如果合理,可以直接将功能添加到对象所属的类(例如,添加一个新的方法) 使用组合 使用继承 注意,本文中的Decorat ...
- Java装饰器模式详解
前言 装饰器模式也叫做包装器模式,属于结构性设计模式一种,装饰器设计模式在实际的生活中也有很多体现,举例来说,某手机厂商发布了XXX标准版手机,为了吸引用户眼球,提升销量,还特别有纪念碑,青春版,至尊 ...
最新文章
- android sqlite操作(2)
- VTK:可视化之BackgroundTexture
- MAC MAMP 中安装配置使用 ThinkPHP
- 致SEO初学者:学习SEO要注意的几个问题
- c语言 大数相加,c/c++开发分享C语言计算大数相加的方法
- 机器学习模型 非线性模型_机器学习:通过预测菲亚特500的价格来观察线性模型的工作原理...
- PyQt5 Python主对话框创建关于对话框源代码
- 前端开发---ppt展示页面评论区展示
- 【luogu1018】 乘积最大 [区间dp+高精][noip2000]
- CoolBlog开发笔记第2课:搭建开发环境
- android 仿小米便签,高仿小米便签
- Mybatis collection 递归查询并自动装填所有子节点(多参数查询传入参数方法)
- javascript 的alert()功能 prompt() 功能
- 【spring】spring 的事务(transaction) 四 嵌套事务PROPAGATION_NESTED
- tkinter + wxpy 实现微信发送信息 接收消息 并保存聊天记录的功能(GUI)
- 神经网络模型的工作原理,人脑神经网络模型
- 无监督低照度图像增强网络ZeroDCE和SCI介绍
- 爬虫代理和验证码识别
- cufft1d c2c
- NYIST 113 字符串替换
热门文章
- tomcat配置url跳转_web和tomcat的区别
- 1.7编程基础之字符串_04石头剪子布
- 成都python数据分析师职业技能_Python+大数据分析师
- 博图能打开s7200吗_域名掉备案了,还能打开吗?域名掉备案了怎么办?
- 数据库工作笔记/设计思路-通过增加索引表为某库中其他表添加索引(描述信息)
- Qt开启本地事件循环(防止界面卡阻塞【卡死】)QEventLoop 的基本使用
- MySQL入门之视图
- python创建百万个文件_python百万sitemap制作
- python截取字符串函数substr_PHP substr():截取字符串
- python输入的数字为什么不能计算_计算器为什么只能进行个位数的计算,每次只能输入一个数字,求...