一、前言
耦合性是程序結構中各個模塊之間相互關聯的度量。它取決于各個模塊之間接口的復雜程度、調用模塊的方式以及哪些信息通過接口。 編寫代碼有兩個核心點:隔離變化、降低復雜度,而解耦是達到這兩個目標的重要手段。
二、使用回調函數降低耦合
問題描述:
實現回家函數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
", arrival_time); /* 不變部分:打印到家時間 */
}
3、實現具體的回調函數
/* 開車回家 */
int on_drive(void* ctx, int departure_time) {
int arrival_time = departure_time + 1; /* 計算開車回家時間 */
printf("drive
"); /* 打印回家方式 */
return arrival_time;
}
/* 走路回家 */
int on_walk(void* ctx, int departure_time) {
int arrival_time = departure_time + 3; /* 計算走路回家時間 */
printf("walk
"); /* 打印回家方式 */
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、輸出

審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
183文章
7644瀏覽量
145605 -
回調函數
+關注
關注
0文章
95瀏覽量
12197
原文標題:C語言回調函數:降低程序耦合性
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
c語言回調函數的使用及實際作用詳解
知道怎么寫回調函數也根本就搞不懂它們在實際產品中也有什么用,什么時候用。所以這節課呢我們會以程序架構的需求為出發點,講解回
發表于 11-20 19:51
?13次下載
如何使用C語言回調函數降低程序耦合性呢?
評論