欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

C语言版:装饰器模式

发布时间:2025/3/15 编程问答 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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语言版:装饰器模式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。