2012-03-01 93 views
14

我正在開發一個需要使用某些庫的不兼容版本的應用程序。我的直覺是在應用程序和庫之間引入了一個適配器,它將注入庫中的適當對象。然後,有人告訴我有關墊片。關於它的文獻並不多。墊片和立面/適配器模式有什麼區別?

我想知道墊片與立面和適配器設計模式有什麼不同?什麼是一些相同的流行用途?

+1

另請參閱http://stackoverflow.com/questions/2116142/what-is-a-shim/12988556#12988556 – 2012-10-20 12:44:53

+0

類似:https://softwareengineering.stackexchange.com/questions/66962/are-wrapper-and -shim-synonymous – 2017-09-25 03:22:52

回答

11

在我眼中,適配器和墊片是相同的。

另一方面,門面服務於不同的目的。如果你期望你的客戶端代碼需要能夠拉回窗簾,可以這麼說,並且訪問底層庫而不使用你的對象模型,那將是一個Facade。 Facade在更復雜的系統之上提供了一組簡化的或通用的對象/方法,但當需要額外的行爲時仍然可以訪問底層的複雜性。

適配器的使用意味着您的客戶端代碼完全沒有意識到底層的實現細節。

+0

正面/適配器差異的好解釋。 – chakrit 2012-03-15 05:55:09

+1

@Chakrit但是你的回答澄清了Shims和Adapters之間的區別 – 2012-10-20 12:34:21

9

IMO,適配器和Shim功能類似,但意味着不同的東西。

A Shim通常具有非常相似的(如果不是確切的話)界面,其中物體被「收縮」。例如,代理對象可以被認爲有點像墊片。

儘管Adapter通常具有完全不同的,如果不是完全不同的話,那麼界面集合的對象被「改編」。

請注意「shim」和「adapt」動詞。這就是我通常將兩者區分開來的方式。