介面卡模式是23中設計模式之一,其作用顧名思義,就是作為乙個轉換器,將系統的資料和行為都正確,但是介面不符的類使用介面卡匹配介面。
介面卡模式將乙個類的介面轉換成客戶期望的另乙個介面,讓原本不相容的介面可以合作無間。
介面卡模式的三個特點:
1 介面卡物件實現原有介面
2 介面卡物件組合乙個實現新介面的物件(這個物件也可以不實現乙個介面,只是乙個單純的物件)
3 對介面卡原有介面方法的呼叫被委託給新介面的例項的特定方法
大話設計中講了乙個應用介面卡的例子:
姚明去美國打籃球了,但是他不會說英語呀,外國教練下達了進攻,防守的命令,和教練有同種語言的人,交流暢通,能按照教練的指示運作。姚明當然也能做動作,關鍵是得來乙個說中文的人呀。於是,翻譯就成了教練和姚明溝通的介面。
uml圖如下:
1.按照uml圖,首先應該有乙個球員抽象類,有進攻和防守的方法:
//籃球運動員
abstract class player
public abstract void attack();
public abstract void defense();
}
2.寫外國球員們的類:
//前鋒
class forwards : player
public override void attack()
進攻", name);
}public override void defense()
防守", name);}}
//中鋒
class center : player
public override void attack()
進攻", name);
}public override void defense()
防守", name);}}
//後衛
class guards : player
public override void attack()
進攻", name);
}public override void defense()
防守", name);}}
3.姚明作為外籍中鋒的類:
//外籍中鋒
class foreigncenter
set
}public void 進攻() //用中文,表示外籍中鋒只聽得懂中文
進攻", name);
}public void 防守()
防守", name);}}
4.翻譯類:(作為轉換器,翻譯教練給球員下達的命令)
//翻譯者
class translator : player
public override void attack()
public override void defense()
}
客戶端類:
class program
}
執行結果:
總體來說,介面卡比較簡單,畫好uml圖之後,寫**思路就很清晰了。
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。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...