|
正在被系統(tǒng)調(diào)用的函數(shù)A,假設(shè)帶有函數(shù)指針參數(shù)或者系統(tǒng)其他地方預(yù)先定義一個函數(shù)指針變量或數(shù)組,定義:
那么正在被調(diào)用的函數(shù)A通過函數(shù)指針參數(shù)調(diào)用該函數(shù)指針參數(shù)對應(yīng)的函數(shù)(或者通過預(yù)先定義的函數(shù)指針變量調(diào)用對應(yīng)的函數(shù))的這個過程就是函數(shù)回調(diào)過程,被回調(diào)的函數(shù)稱為回調(diào)函數(shù)
通過函數(shù)指針臨時形式參數(shù)進行函數(shù)回調(diào)的 一般我稱之為 直接回調(diào)
通過全局的或預(yù)先定義的函數(shù)指針變量(數(shù)組)進行函數(shù)回調(diào)的過程 一般我稱之為 函數(shù)注冊回調(diào)
函數(shù)注冊回調(diào)需要編寫注冊函數(shù),將要被回調(diào)的函數(shù)的地址注冊到全局的或預(yù)先定義的函數(shù)指針變量中去,這個過程稱之為函數(shù)注冊,函數(shù)被注冊到全局或預(yù)先定義的函數(shù)指針變量中去后,可以被進行回調(diào)
作用:
方便層與層的隔離,方便系統(tǒng)功能的擴展,比如編寫一個比較函數(shù),通過回調(diào)方法編寫,可以將應(yīng)用層的比較函數(shù)實現(xiàn)無限制類型的數(shù)據(jù)比較,N種類型比較,但是具體的比較方法留給用戶自定義擴展,比較函數(shù)只在自己的形式參數(shù)中提供接口(一個函數(shù)指針的形式參數(shù)變量),
再比如一個應(yīng)用層與底層隔離,應(yīng)用層通過參數(shù)回調(diào)底層不同的處理函數(shù),而底層實現(xiàn)無限制擴展。
應(yīng)用:
當(dāng)一個系統(tǒng)或者一個函數(shù)有很多種情況要處理,或者初步代碼完成后仍然會根據(jù)用戶需求添加很多的針對某種情況的處理方法,這時考慮采用回調(diào)函數(shù)方法
總之為系統(tǒng)功能擴展、需通過一種接口處理很多種情況,上下級隔離時,就要考慮使用回調(diào)函數(shù)
|
|