在《大話設計模式》中大鳥和小菜是通過姚明剛加入火箭隊時候英文不好,需要乙個中間翻譯 來溝通,就類似於軟體設計中的介面卡模式一樣,引入話題的。adapter,將乙個類的介面轉換成客戶希望的另乙個介面。adapter模式使得原本由於 介面不相容而不能一起工作的類可以一起工作。
對於這個模式我是身有體會,因為在曾經開發電子商務系統的時候,需要同客戶的****、客戶的erp系統資料建立資料互動,然後**介面中取的資料有** 自己的資料格式,與**的資料互動主要是訂單資訊和訂單收貨人資訊,而同客戶erp互動的主要是基礎庫資訊,如產品、門店等資訊。自身的系統同樣建立了會 員、門店、產品、訂單等資訊表,也同樣建立由此展開的業務邏輯類、資料model、以及訪問介面類。這樣一來的話,以訂單資訊為例,**介面返回的資料有 訂單資料的model,erp實體門店訂單資料的model和電商自身的訂單model又是截然不同的,而由此導致的訂單業務邏輯操作也是不同的。
就以這個應用為例,我們以電商為核心,因為這個是需要繼續完善和拓展的,而**和erp我們都暫時認為是需要接入的系統,那麼如何在自己的電商系統中完美無縫的連線入**、erp的資料,以及如何完整沒有隔閡的訪問這兩類訂單資料呢。
實體類**:
public初步的思路是這樣的,電商作為本地系統更新,**和erp的資料匯入中間庫,而後在中間庫中形成自己的訪問資料模式,而涉及到訂單資料的對外介面,我們可 以統一使用介面卡模式,將**的訂單資料、erp實體店的訂單資料轉化為本地電商的資料model和業務實現類。class
memberinfo
public
string mmbrinfoname
}public
class
taobao_transactionh
public
string storecode
public
string receiver_name
}public
class
erpdd
public
string hyid
}public
class
order_info
public
string mmbrinfoid
public memberinfo mmbrinfo
public
order_info()
}
由於介面卡的實現,說到底就是若干各類組成的,為完成這樣乙個耦合度的設計,在這個例項中說白了就是我需要將taobao和erp訂單操作適用於 order,那麼就需要針對taobao和erp各寫乙個介面卡類,那麼實現起來不同的程式設計師或許有不同實現方式,我,所以,遇到這種統一規範的事情,第 一想到的就是介面或抽象類。
定義iorderserviceadapter介面,就此在系統架構中立乙個永垂不朽的釘子,我的訂單介面卡都必須實現該介面,別的不認!
介面中定義了乙個方法,返回型別為order_info為最終同電商的型別匹配,引數為乙個型別object,這裡如果想繼續複雜點,可以不用object,使用泛型t實現。
**實現:
public實現這個介面的就是為所有接入的訂單資訊,做準備的,我們這裡比如的**訂單、erp訂單,若干天後,我們出現了京東的訂單,再若干天後我們又出現 了拍拍**的訂單,只要實現了這個介面,就能通自己電商系統中的訂單資訊進行適配。所以在系統中我加了第二個引數adaptertype,列舉型別,為就 是分辨出不同**的訂單型別,進行轉換,當然這裡其實我們可以用工廠模式來進行處理,後續再細聊。inte***ce
iorderserviceadapter
列舉型別實現**:
介面卡實現**:
public好,由此整個大的框架我們就確定了,執行**:class
orderserviceadapter : iorderserviceadapter
return
order;}}
class執行結果:program
}
附上我的源**:
由此我們可以看出,將三個完全不搭的型別,搭到了一起,統一到了order_info的型別,我想上述的思想和思路可能,很多人一看都懂,也沒有太 多花哨的**,但,我們確實使用到了設計模式,其實設計模式並沒有那麼高深,當然想用好,想用精可能高深的**還真需要花功夫。
最後,在說說在《大話設計模式》中其實也指出來了,這個模式並不是事前模式,他更多的看做是一種修復模式,我們可以在例項中看到,其實,這個在癒合 三個系統,如果是一般的設計乙個全新的系統,大可不必使用著這個找相容的模式,給乙個新系統設計架構的時候,我們在設計之初就應該考慮相容性,所以模式這 篇中用扁鵲醫病來形象的說明了這個問題,將病症防微杜漸才是真的高明的醫生。
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式之介面卡
介面卡模式是一種結構模式,又稱為包裝模式,主要用於對不相容的介面或類實現相容轉換。介面卡模式有兩種 類介面卡 物件介面卡。類介面卡 通過繼承來實現介面卡功能 上!public inte ce ps4 public inte ce usb public class usber implements u...
設計模式之 介面卡模式
1,介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法一起工作的兩個類能夠在一起工作 2,介面卡模式有兩種 1 類的介面卡模式 介面卡類繼承源類 這樣介面卡類就繼承了源類有的方法 並實現目標介面,實現在源類中沒有而在介面中有的方法,從而實現介面卡類有目標介面的所有方...