介面卡模式

homle發表於2024-04-06

介面卡模式(Adapter),將一個類的介面轉換成客戶希望的另外一個介面。Adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。

在軟體開發中,系統的資料和行為都正確,但介面不符時,我們應該考慮用介面卡,目的是使控制範圍之外的一個原有物件與某個介面匹配。介面卡模式主要應用於希望複用一些現存的類,但是介面又與複用環境要求不一致的情況,比如在需要對早期程式碼複用一些功能等應用上很有實際價值。

在Gof的設計模式中,對介面卡模式講了兩種型別,類介面卡模式和物件介面卡模式,由於類介面卡模式通過多重繼承對一個介面與另一個介面進行匹配,而C#、VB.NET、JAVA等語言都不支援多重繼承(C++支援),也就是一個類只有一個父類,所以這裡主要講的是物件介面卡。


何時使用介面卡模式?

在想使用一個已經存在的類,但如果它的介面,也就是它的方法和你的要求不相同時,就應該考慮用介面卡模式。兩個類所做的事情相同或相似,但是具有不同的介面時,要使用它。而且由於類都共享同一個介面,使得客戶程式碼可以同一呼叫同一介面,這樣可以更簡單、更直接、更緊湊。

介面卡模式通常是在軟體開發後期或維護期再考慮使用。

要在雙方都不太容易修改的時候再使用介面卡模式適配,而不是一有不同時就使用它。

當然,如果使用第三方開發元件,而這個元件的介面與我們自己系統的幾口不相同,而我們又不想改動自己的介面時,此時就可以考慮用介面卡模式來解決介面不同的問題。

介面卡模式的.NET應用

DataAdapter用作DataSet和資料來源之間的介面卡以便檢索和儲存資料。DataAdapter通過對映Fill(這更改了DataSet中的資料以便與資料來源中的資料相匹配)和Update(這更改了資料來源中的資料以便與DataSet中的資料相匹配)來提供這一介面卡。由於資料來源可能是來自SQL Server,可能來自Oracle,也可能來自Access、DB2,這些資料在組織上可能有不同之處,但我們希望得到統一的DataSet(實質是XML資料),此時用DataAdapter就是非常好的手段,我們不必關注不同資料庫的資料細節,就可以靈活的使用資料。


相關文章