C语言版:装饰器模式

C语言装饰器模式实现


C语言是面向过程的一门语言,更注重过程,是一个一个函数进行一个一个去执行 是这么一个过程,那么我们怎样来实现用C语言来实现类似装饰器模式的效果呢?

每个函数是一个单独的过程,这个函数编写之后,我们可以为这个函数添加新的功能或者逻辑而不改动原函数,这就实现了类似装饰器的效果了。C语言中指针很强大,任何定义的函数都可以用函数指针指向函数。所以可用通函数指针将函数传到另一个函数中C语言中多态的形式也是通过函数指针来类似实现的


C语言装饰器模式代码展示


实际上就是在通过函数指针执行函数的前后执行执行装饰器的内容

#define _CRT_SECURE_NO_WARNINGS
#include 
//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语言版:装饰器模式_第1张图片



你可能感兴趣的:(【设计模式】,【Language_C】)