日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

代理、委托、钩子与打桩

發(fā)布時間:2024/4/13 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代理、委托、钩子与打桩 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

代理、委托、鉤子與打樁

  • 代理
  • 委托
  • 鉤子
    • 廣義的鉤子
  • 打樁

代理

??代理(proxy)指的是在需要使用某個事物時,使用另一個事物來代替原本需要的該事物。具體來說,若原本需要某個類的方法,而現(xiàn)在創(chuàng)建了該類的一個代理類,那么就可以在原本需要使用該類的地方,使用該類的代理類來替換。

??一般意義下的代理的使用場景有很多,比方說,可以在原來類的基礎(chǔ)上實現(xiàn)更復(fù)雜的功能。具體來說,如果需要某個類 A 的方法 a。可以定義類 A 的代理類 AProxy,并在其同名方法 a 中調(diào)用原來類 A 的方法 a,這樣一來,代理類 AProxy 的同名方法 a 不僅擁有原來類 A 的方法 a 的功能,還可以在其基礎(chǔ)上增加其它功能。

委托

??委托(delegate)指的是一個類在定義的時候就表示自己只是提供相關(guān)的實現(xiàn),把運行自身代碼這項活動交給其它類來完成。

??委托和代理的聯(lián)系很緊密,但側(cè)重點不同。委托類相當(dāng)于代理中的被代理類(就是上面代理中提到的“原來類”),被委托類相當(dāng)于代理中的代理類。但代理中的被代理類在設(shè)計的時候并不一定要聲明自己以后會被代理,實際上,被代理類在設(shè)計的時候并不知道自己以后會被代理。代理只是強調(diào)對代理類的實現(xiàn),而不是對被代理類的實現(xiàn)。同理,在委托中,側(cè)重點是實現(xiàn)委托類,至于被委托類應(yīng)該怎么設(shè)計,這不是委托應(yīng)該主要考慮的事情。

??委托類的設(shè)計是為了遵守設(shè)計模式中的單一職責(zé)原則,將一個活動的定義與使用分離。

鉤子

??鉤子(hook)指的是一個程序預(yù)設(shè)的子程序跳轉(zhuǎn)入口。在不同的編程語言、不同場景下,鉤子可以指預(yù)先約定的某一類函數(shù)名、某個類的接口引用字段等等。

??鉤子在生活中指的是可以鉤住其它東西的一種工具,只要其它東西上有能被鉤子鉤住的圓環(huán)即可。如果我們要使用其它工具,可以先通過鉤子來獲取該工具,這只需要提前在該工具上安裝一個圓環(huán)即可。在編程中,這里的圓環(huán)相當(dāng)于一個約定的接口,只要自己編寫的程序遵守了此約定的規(guī)范,就可以在含鉤子的程序在調(diào)用該程序。

??鉤子和代理也有些淵源。在某種角度上,含鉤子的類也可以看成是一個代理類。但鉤子和代理的區(qū)別在于,它們設(shè)計思路(流程)正好相反。對于代理,一般來說,被代理的類是很早以前就已經(jīng)設(shè)計好了,而代理類依賴于被代理的類且設(shè)計時間晚于被代理類。但對于鉤子,含鉤子的程序往往是提交已經(jīng)設(shè)計好了,之后只需要在使用該程序之前,將“圓環(huán)程序”提供該“鉤子程序”,就可以使用該“鉤子程序”了。可以看出,雖然“鉤子程序”是依賴“圓環(huán)程序”的,但“圓環(huán)程序”的設(shè)計時間與“鉤子程序”相對獨立,是可以晚于“鉤子程序”的。另外,“鉤子”并未嚴格限定“圓環(huán)程序”的內(nèi)容,“圓環(huán)程序”只需要遵守某種約定的規(guī)范,其內(nèi)容可以自由發(fā)揮。這類似于 IoC 思想。如果硬要把代理中的概念與鉤子相對應(yīng),那么從這個角度上,代理與鉤子的區(qū)別在于,對于代理,可以自由發(fā)揮的是代理類,而對于鉤子,則是被代理類。

廣義的鉤子

??廣義的鉤子指的是一個可以控制程序流程的一段代碼。但這段代碼與程序其它部分的代碼屬于低耦合,即可以通過不改動其它部分的代碼的條件下,任意地更改這段代碼來控制程序的走向。

??因此,廣義的鉤子不僅包括上面介紹的鉤子,還包括一些類中預(yù)設(shè)的布爾函數(shù),比方說,可以對某一系列的類中都設(shè)置一個布爾函數(shù),然后用該布爾函數(shù)的返回值來決定程序走向,則該布爾函數(shù)就是一個廣義的鉤子。

打樁

??在編程中,樁(stub)是指用于模擬真實環(huán)境的代碼段。在開發(fā)者測試中,常常需要模擬真實的環(huán)境來用于測試。因為構(gòu)建真實的環(huán)境往往成本很大或者不可能,這就需要模擬。在開發(fā)者測試中,一個大型的項目必須要分解成各個基本的單元,先進行單元測試(UT),然后進行集成測試(IT),最后進行系統(tǒng)測試(ST)。分開測試的各個部分的碎片化的模擬環(huán)境稱為樁。樁一般就具體為,對真實環(huán)境進行模擬所編寫的函數(shù)。對樁函數(shù)的編寫稱為打樁。

總結(jié)

以上是生活随笔為你收集整理的代理、委托、钩子与打桩的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。