乙個週末又度過了,不過好像過得有點累,不過再類也要堅持學習。呵呵!
今天就要開始學習「結構模式」中的 介面卡模式了。 先來看看定義。
介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法在一起工作的兩個類能夠在一起工作。
介面卡模式有兩種形式:
一、類的介面卡模式。
目標角色(target):這是客戶端所期待的介面。因為 c#不支援多繼承,所以 target 必須是介面,不可以是類。
源角色(adaptee):需要適配的類。
介面卡角色(adapter):把源介面轉換成目標介面。這一角色必須是類。
二、物件的介面卡模式。
目標角色(target):這是客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。
源角色(adaptee):需要適配的類。
介面卡角色(adapter):通過在內部包裝(wrap)乙個 adaptee 物件,把源介面轉換成目標介面。
在以下各種情況下可以使用介面卡模式:
1、 系統需要使用現有的類,而此類的介面不符合系統的需要。
2、 要建立乙個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作,這些源類不一定有很複雜的介面。
3、 (對物件介面卡而言)在設計裡,需要改變多個已有子類的介面,如果使用類的介面卡模式,就要針對每乙個子類做乙個介面卡,而這不太實際。
adapter 模式在實現時有以下這些值得注意的地方:
1、 目標介面可以省略,模式發生退化。但這種做法看似平庸而並不平庸,它可以使 adaptee不必實現不需要的方法(可以參考 defa 模式)。其表現形式就是父類實現預設方法,而子類只需實現自己獨特的方法。這有些像模板模式。
2、 介面卡類可以是抽象類。
3、 帶引數的介面卡模式。使用這種 ,介面卡類可 數返還乙個合適的例項給客戶端。
額 這個介面卡模式看完了,總結一下:從定義和事例來看,這個介面卡就是 讓本身不支援某一種方法的介面去支援那一種方法,而實現的關鍵就在於多了乙個2者之間的派生類。而在這個派生類中去呼叫了那個本色沒有的方法。從而達到了掉用同乙個介面 實現了不屬於這個介面的方法。 說是 就好比變壓器一樣,本來傳入電壓是220v 但是通過不同的變壓器可以變成你想要的電壓。
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式 介面卡模式
01 02 author rollen holt 設計模式之 介面卡模式 03 04 05 inte ce window 11 12 abstract class windowadapter 16 public void close 19 public void activated 22 publi...