2021-10-08

回调函数的经典示例

示例代码:

如何插入一段漂亮的代码片

#include<stdio.h>
#include<string.h>
#include"bubbleSort.h"

int compare_int(const void * e1, const void * e2)
{
	return *(int *)e1 - *(int *)e2;
}
int compare_int_r(const void * e1, const void * e2)
{
	return *(int *)e2 - *(int *)e1 ;
}
int compare_str(const void * e1, const void *e2)
{
	return strcmp(*(char **)e1, *(char **)e2);
}

void main()
{
	int arrayInt[] = { 39, 33, 18, 64, 73, 30, 49, 51, 81 };
	int numArray = sizeof(arrayInt) / sizeof(arrayInt[0]);
	
	bubbleSort(arrayInt, numArray, sizeof(arrayInt[0]), compare_int);
	for (int i = 0; i <numArray; i++) 
	{
		printf("%d ", arrayInt[i]);
	}
	printf("\n");
	bubbleSort(arrayInt, numArray, sizeof(arrayInt[0]), compare_int_r);
	for (int i = 0; i <numArray; i++) 
	{
		printf("%d ", arrayInt[i]);
	}
	printf("\n");
	char * arrayStr[] = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };
	numArray = sizeof(arrayStr) / sizeof(arrayStr[0]);
	bubbleSort(arrayStr, numArray, sizeof(arrayStr[0]), compare_str);
	for (int i = 0; i < numArray; i++) 
	{
		printf("%s\n", arrayStr[i]);
	}
}

分层设计原则:

1.硬件抽象层
2.虚拟层
3.应用层

隔离变化

好莱坞原则:不要调用我,让我调用你
当下层需要传递数据给上层时,则采用回调函数指针接口隔离变化。
通过倒置依赖的接口所有权,创建一个更灵活 更持久和更易修改的结构。