[OOD] 介面卡模式
背景
世界上電源插頭標準很多, 這裡只說國標和英標:中國標準:
英國標準:
各地插頭標準不同帶來的另一個問題是各地的標準插座主要針對當地插頭設計。 常在世界各地跑的朋友都知道一定要配個轉接頭, 比如這個:
這個轉換頭名稱是World Travel Adapter, 所起的作用就是適配。(嚴格來說,上面的轉接頭還應用了工作方法。)
*另一種形式是由插座提供適配,作用是一樣的。
在軟體領域裡,我們也常常需要對接兩種不同的介面。在設計上有兩種模式可以參考。下面以檔案操作適配到資料庫操作的介面卡為例。
1. 多重繼承
這樣在Adapter裡CreateDB()的處理就是呼叫FileAPI::Open();
2. 組合模式
這時Adapter::CreateDB()實現就是adaptee_->Open();
討論
介面卡模式常常與橋接模式相比較,兩者最大的不同在於解決的問題不同。介面卡用於對接兩個不同的介面,而橋接則主要為了隔離變化。從應用上來說,一個是被動的,一個是主動的。 所謂被動的,就是當前的介面的差異是無法輕易改變的,必須引入一箇中間層來解決。而中間層的引入往往帶有效能、以及不必要的資料拷貝等開銷,詳細參考關於層的反模式討論。如果介面是可控,就要儘量避免介面不一致的情形。而不是等待使用Adapter來處理。
相關文章
- OOD&OOP-單例模式OOP單例模式
- 介面卡模式(類介面卡 物件介面卡)模式物件
- 介面卡模式模式
- 介面卡模式(類介面卡,物件介面卡,介面介面卡)模式物件
- 設計模式:介面卡模式設計模式
- 設計模式-介面卡模式設計模式
- 設計模式----介面卡模式設計模式
- 【設計模式】介面卡模式設計模式
- 設計模式--介面卡模式/代理模式設計模式
- java 介面卡模式Java模式
- python 設計模式-介面卡模式Python設計模式
- 結構型模式:介面卡模式模式
- 設計模式之介面卡模式設計模式
- JavaScript 設計模式 —— 介面卡模式JavaScript設計模式
- java設計模式-介面卡模式Java設計模式
- 設計模式(七)介面卡模式設計模式
- 設計模式(五):介面卡模式設計模式
- 設計模式之【介面卡模式】設計模式
- 介面卡模式(adapter pattern)模式APT
- PHP-介面卡模式PHP模式
- Adapter-介面卡模式APT模式
- 介面卡設計模式設計模式
- Java的介面卡模式Java模式
- 精通 Golang 介面卡模式Golang模式
- C#介面卡模式C#模式
- 設計者模式之介面卡模式模式
- PHP設計模式-Adapter 介面卡模式PHP設計模式APT
- python設計模式之介面卡模式Python設計模式
- PHP設計模式(2)—— 介面卡模式PHP設計模式
- Java 設計模式(一)《介面卡模式》Java設計模式
- Javascript 設計模式之介面卡模式JavaScript設計模式
- PHP 設計模式之介面卡模式PHP設計模式
- Java設計模式之介面卡模式Java設計模式
- 設計模式【6.1】-- 初探介面卡模式設計模式
- 極簡設計模式-介面卡模式設計模式
- Java設計模式(6)----------介面卡模式Java設計模式
- Object oriented design (OOD)Object
- 設計模式第五講-介面卡模式設計模式
- 《設計模式》 - 5. 介面卡模式( Adapter )設計模式APT