本文主要介紹鉤子鉤子技術(shù)(keepalive鉤子功能),下面一起看看鉤子鉤子技術(shù)(keepalive鉤子功能)相關(guān)資訊。
一、什么是鉤子函數(shù)?
鉤子函數(shù)是一個只有在特定條件下才會被執(zhí)行的函數(shù)。將你實現(xiàn)的功能掛載到掛載點。
1.鉤子函數(shù):是我們自己實現(xiàn)的函數(shù),函數(shù)類型匹配掛載點(返回值,參數(shù)列表)。2.hook:即hook或register,使鉤子函數(shù)對目標可用。3.目標掛載點:也就是我們掛鉤子函數(shù)的地方(我們想在這個目標點實現(xiàn)自己的功能。2.使用場景。
鉤子函數(shù)通常用在過程代碼中,掛載點可能會也可能不會執(zhí)行我們實現(xiàn)的函數(shù),只有在滿足一定條件的情況下。
第三,比如
鉤子的概念在windows的消息響應機制中尤為明顯。可能我們都寫過windows桌面相關(guān)的程序(像mfc),有各種各樣的消息監(jiān)控和響應機制。例如,要監(jiān)控鼠標左鍵是否被按下,我們需要實現(xiàn)onleftkeydown之類的方法,這個方法可以被稱為hook函數(shù)。同時我們還要注冊鉤子函數(shù),這個函數(shù)是由mfc中的一組宏來實現(xiàn)的。這樣,當鼠標左鍵按下時,就可以轉(zhuǎn)移到我們定義的方法。
讓 讓我們想想上面的例子。左擊方法的具體邏輯是框架本身實現(xiàn)的還是我們的用戶(調(diào)用者)實現(xiàn)的?顯然應該靠自己去實現(xiàn)??蚣鼙旧頌榱颂峁┩ㄓ玫目蚣苣芰Χ鴮崿F(xiàn)這種方法的功能是沒有意義的,所以框架提供了一個掛載點,把具體邏輯的實現(xiàn)交給用戶,靈活可用。
四、使用方法
鉤子函數(shù)的實現(xiàn)就是通過一定的關(guān)系將兩個函數(shù)關(guān)聯(lián)起來。例如,在上面的例子中,register_rice_hook函數(shù)和make_rice通過self.make_rice關(guān)聯(lián)。如果要執(zhí)行make _ rice函數(shù),需要先注冊(register_rice_hook)。然后判斷注冊時傳入的self.make_rice是否為空。如果為空,則注冊不成功,不執(zhí)行自己編寫的函數(shù)make_rice。如果不為空,則執(zhí)行函數(shù)make_rice,大大擴展了類的可執(zhí)行方法。
標簽:
函數(shù)掛鉤
了解更多鉤子鉤子技術(shù)(keepalive鉤子功能)相關(guān)內(nèi)容請關(guān)注本站點。