介面卡模式(Adapter Pattern)

2021-06-05 08:32:40 字數 2269 閱讀 3932

介面卡模式(adapter pattern):

將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原來由於介面不相容而不能一起工作的

那些類可以一起工作。

///

/// target類:這是客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。

///

public class target}

///

/// 需要適配的類

///

class adaptee}

///

/// 通過在內部包裝乙個adaptee物件,把源介面轉換成目標介面

///

class adapter : target}

class program }

優勢和缺陷:

介面卡模式可以將乙個類的介面和另乙個類的介面匹配起來,使用的前提是你不能修改或不想修改原來的介面卡母介面(adaptee)

。例如,你向第三方購買了一些類、控制項,但沒有源程式,這是使用介面卡模式,可以統一物件的訪問介面。但客戶呼叫可能需要

變動。

應用:(1)物件需要利用現存的並且介面不相容的類

(2)需要建立可重用的類協作其它介面不一定相容的類

(3)需要使用若干個現存的子類但又不想派生這些子類中的每乙個介面。

例項:籃球翻譯

///

/// 球員類,有進攻和防守的方法

///

public abstract class player

//進攻

public abstract void attack();

//防守

public abstract void defence();}

///

/// 前鋒類

///

public class forwards : player

public override void attack()

進攻",name);}

public override void defence()

防守",name);}}

///

/// 中鋒類

///

public class center : player

public override void attack()

進攻", name);}

public override void defence()

防守", name);}}

///

/// 後衛類

///

public class guards : player

public override void attack()

進攻", name);}

public override void defence()

防守", name);}}

///

/// 外籍中鋒

/// adaptee類,需要適配的類

///

public class foreigncenter

set }

//說明外籍中鋒只懂得中文進攻

public void 進攻()

進攻",name);

}//外籍中鋒只懂得中文防守

public void 防守()

防守",name);}

} ///

/// 翻譯類:adapter類

///

public class translator : player

//翻譯者講attack翻譯為進攻告訴外籍中鋒

public override void attack()

public override void defence()}

客戶端呼叫

//介面卡模式

adapterpattern.player player1 = new adapterpattern.forwards("巴蒂爾");

player1.attack();

adapterpattern.player player2 = new adapterpattern.guards("艾克斯雷迪");

player2.attack();

//翻譯告訴姚明,教練要求進攻和防守

adapterpattern.player yaoming = new adapterpattern.translator("姚明");

yaoming.attack();

yaoming.defence();

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...