2010-01-22 107 views

回答

68

維基百科:

在計算機程序中,shim是透明地截取的API,改變傳遞的參數,處理操作本身,或其他地方重定向的動作的小庫。墊片通常在API的行爲發生變化時出現,從而導致仍依賴舊功能的舊應用程序出現兼容性問題。在這些情況下,較新的代碼之上的較薄的兼容層仍然可以支持較舊的API。墊片也可以用於在不同的軟件平臺上運行程序,而不是開發它們。

+6

在javascript中引發了很多討論。 – coderatchet 2014-05-30 02:15:45

+18

此答案與在wikipedia上進行實際的谷歌搜索沒有區別。一個例子會很好。 – Sung 2016-01-01 03:08:58

+1

這聽起來像是使用Facade設計模式來連接庫。 – blz 2016-10-20 16:25:19

12

至於字,答曰蘋果的字典小的起源

noun 
    a washer or thin strip of material used to align parts, 
    make them fit, or reduce wear. 

verb (shimmed, shimming) [ trans. ] 
    wedge (something) or fill up (a space) with a shim. 

ORIGIN early 18th cent.: of unknown origin 

這似乎符合得很好用的網頁設計師如何使用這個術語。

33

維基百科定義的術語「墊片」在技術上將根據其定義在「結構」設計模式中進行分類。在許多類型的「結構」設計模式中,很清楚地描述了(有些人會說事實上)面向對象的軟件設計模式,其參考"Design Patterns, Elements of Reusable Object-Oriented Software"更好地被稱爲"Gang of Four"

"Gang of Four"文本概述至少3點被稱爲「代理」,「適配器」和「正面」,這都提供了「墊片」類型的功能很好地建立的模式。在大多數領域中,常常會出現使用和不使用不同縮略詞的相同根概念,導致人們混淆。使用「墊片」一詞來描述更具體的「結構」設計模式"Proxy","Adapter""Facade"肯定是這種情況的一個明顯例子。 「墊片」只是更具體類型的「結構」模式「代理」,「適配器」,「外觀」以及其他可能的更普遍的術語。

+8

這種感覺更像是一個真正的答案,而不是簡單的維基百科複製和粘貼@Prasoon Saurav ... – Sung 2016-01-01 03:10:23

+1

這個答案表明墊片是設計模式(許多人之一)設計了一些類似的設計模式,並且關於人們如何被不同縮略詞混淆的切線出發。但它實際上並沒有回答什麼是墊片的原始問題,它做了什麼,或者如何使用墊片。 – 2017-03-21 18:15:47

+0

一輪又一輪:/ – harshvchawla 2017-05-11 09:09:22

5

根據微軟的文章"Demystifying Shims"

它是基於英語單詞墊片,這是用來形容一塊木頭或金屬的被插入到兩個物體之間 的 工程項的隱喻讓他們更好地融合在一起。在 計算機編程中,墊片是一個小型庫,它透明地攔截API,更改傳遞的參數,處理操作本身或將操作重定向到其他地方。墊片也可以用 在不同的軟件平臺上運行程序,而不是它們的開發目的。

我將其解釋爲意味着墊片是任何充當中間人的代碼庫的一般術語,部分或完全改變程序的行爲或操作。像真正的中間人一樣,它可能會影響傳遞給該程序的數據,或者影響從該程序返回的數據。

文章使用Windows API作爲一個例子,我發現有關下面的句子:

應用程序通常不知道該請求是要一個 墊片DLL,而不是到Windows本身, Windows不知道 請求來自應用程序以外的源(因爲 shim DLL只是應用程序進程內的另一個DLL)。

爲了概括這段引文,製作「墊片三明治」的「麪包」的兩個程序應該無法區分與對方程序交談並與墊片交談。

使用墊片有什麼優點和缺點?

再次,從文章:

您可以修復應用,而無需訪問源代碼,或不 改變它們。您會產生極少量的額外管理開銷......並且您可以通過這種方式修復合理數量的應用程序。不利的一面是支持,因爲大多數供應商不支持SHIMED應用程序,因此 。您無法使用墊片修復每個 應用程序。大多數人通常認爲墊片爲 應用程序,其中供應商停業,該軟件不是 足夠的戰略需要支持,或者他們只是想購買一些 時間。

在這個問題中,像「代理」,「適配器」和「外觀」這些術語在閱讀上述鏈接後更有意義(至少對我而言)。

+1

由downvote困惑。如果我的答案錯了,我很想知道爲什麼我可以改進這個和未來的答案。 – 2017-04-11 15:02:10