design pattens - adapter

RecoReco發表於2018-01-18

介面卡模式適應這樣的場景:一個已經存在的類(Adaptee),它因為介面和客戶需要的並不匹配而不能直接被重用。

通過定義一個單獨的介面卡類,此類實現客戶需要的介面,內部呼叫轉向到這個已經存在的、但是介面不能直接適配的類Adaptee。

介面卡模式的要點在於,通過引入一個介面卡類,轉換客戶程式碼需要的介面到現存的類,這樣做的好處就是這是增加程式碼,而不去修改程式碼。增加的是介面卡類,無需改動的是先做的類,以及客戶呼叫介面的程式碼。這也暗和“開閉原則” - 對修改封閉,對新增開放。

我們看一個案例。一個倉庫系統,需要使用進銷存系統的類來完成對應單據的過賬。進銷存內的現存類並不能提供倉庫系統要求的介面,此時設計者就引入了一個介面卡類,Adapter。設計者(王馮)提供的圖是這樣的:

design pattens - adapter

正式的wiki上對介面卡的定義,提供了兩種實現介面卡模式的可能。第一種是組合Adaptee類到Adapter類內,一種是Adapter類繼承Adaptee類,兩者的差異在標註的程式碼中得到體現。繼承是更加省事的方案。當然有些條件下不能繼承,就只能用組合。比如遇到了sealed類,就沒有辦法繼承了。

design pattens - adapter

相關文章