大話設計模式之介面卡模式總結 java實現

2021-08-27 04:43:40 字數 2222 閱讀 2188

注:示例來自《大話設計模式》

假如現有如下場景 籃球比賽 教練叫暫停時給後衛 中鋒 前鋒分配進攻和防守任務 簡單**實現如下

球員類

package test17;

//籃球運動員

public

abstract

class player

public

abstract

void

attack();

public

abstract

void

defense();

}

前鋒 中鋒 後衛類

package test17;

//前鋒

public

class

forwards

extends

player

@override

public

void

attack()

@override

public

void

defense()

}

package test17;

//中鋒

public

class

center

extends

player

@override

public

void

attack()

@override

public

void

defense()

}

package test17;

//後衛

public

class

guards

extends

player

@override

public

void

attack()

@override

public

void

defense()

}

客戶端**

package test17;

public

class program

}

假如外籍中鋒不會英語 聽不懂教練說的英語進攻 防守 我們需要有翻譯者類來適配 接下來我們使用介面卡模式進行重構 **如下

外籍中鋒類

package test17;

//外籍中鋒

public

class foreigncenter

public

void

setname(string name)

public

void 進攻()

public

void 防守()

}

翻譯者類

package test17;

//翻譯者

public

class

translator

extends

player

@override

public

void

attack()

@override

public

void

defense()

}

客戶端**

package test17;

public

class program

}

介面卡模式 將乙個類的介面轉換成客戶希望的另外乙個介面 介面卡模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作

在軟體開發中 也就是系統的資料和行為都正確 但介面不符時 我們應該考慮用介面卡 目的是使控制範圍之外的乙個原有物件與某個介面匹配 介面卡模式主要應用於希望復用一些現存的類 但是介面又與復用環境要求不一致的情況

在想使用乙個已經存在的類 但如果它的介面 也就是它的方法和你的要求不相同時 就應該考慮用介面卡模式

兩個類所做的事情相同或相似 但是具有不同的介面時要使用它 這樣客戶**統一呼叫同一介面就行了 可以更簡單 更直接 更緊湊

在雙方都不太容易修改的時候再使用介面卡模式適配

缺點 對於物件介面卡來說 更換介面卡的實現過程比較複雜

大話設計模式之介面卡模式

現在有乙個需求 為不懂英語的姚明設定乙個翻譯 球員父類 集合了球員必備的名字與方法等屬性 package adapterpattern public abstract class player public abstract void attack public abstract void defe...

大話設計模式之介面卡模式

現在有乙個需求 為不懂英語的姚明設定乙個翻譯 球員父類 集合了球員必備的名字與方法等屬性 package adapterpattern public abstract class player public abstract void attack public abstract void defe...

大話設計模式之介面卡模式

什麼時間使用,主要是專案的後期維護,設計時最好不要想使用介面卡模式。圖示 下面以姚明在剛到 打籃球需要英語翻譯為例 class program 抽象基類 abstract class player public abstract void attack public abstract void de...