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