一、前言
耦合性是衡量程序结构中各个模块相互关联程度的指标。它取决于模块接口的复杂程度、调用方式以及通过接口传递的信息。
在编写代码时,隔离变化和降低复杂度是两个核心点,而解耦是实现这两个目标的重要手段。
以下是两篇关于回调函数的不错文章:
二、使用回调函数降低耦合
问题描述:实现回家函数come_home,传入出发时间,打印回家的方式以及到家时间,有两种回家方式:开车和走路。开车需要1小时,走路需要3小时。
功能分析:由于回家方式不同,所需时间也不同,因此到家的时间也不同。可以将come_home函数的代码分为变化部分和不变部分,并将变化部分放在回调函数中,以实现隔离变化的目的。
变化部分:输出回家方式,并根据出发时间计算到家时间。
不变部分:输出到家时间。
1、定义回调函数指针
typedef int (*on_arrival_t)(void* ctx, int departure_time);
2、编写come_home函数
void come_home(int departure_time, on_arrival_t on_arrival, void* ctx)
{
int arrival_time = on_arrival(ctx, departure_time); /* 变化部分:调用回调函数计算到家时间 */
printf("arrival_time: %d\n", arrival_time); /* 不变部分:打印到家时间 */
}
3、实现具体的回调函数
/* 开车回家 */
int on_drive(void* ctx, int departure_time) {
int arrival_time = departure_time + 1; /* 计算开车回家时间 */
printf("drive\n"); /* 打印回家方式 */
return arrival_time;
}
/* 走路回家 */
int on_walk(void* ctx, int departure_time) {
int arrival_time = departure_time + 3; /* 计算走路回家时间 */
printf("walk\n"); /* 打印回家方式 */
return arrival_time;
}
4、main函数
int main(int argc, char* argv[])
{
come_home(17, on_drive, NULL); /* 17点开车回家 */
come_home(17, on_walk, NULL); /* 17点走路回家 */
return 0;
}
5、输出
温馨提示
由于微信公众号近期改变了推送规则,如果您想经常看到我们的文章,可以在每次阅读后,在页面下方点一个「赞」或「在看」,这样每次推送的文章才会第一时间出现在您的订阅列表里。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !