介面卡模式:將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。
書本上給出了乙個很好的例子:nba裡面,姚明是乙個外籍中鋒,他和其他成員的語言不通,那麼他就需要翻譯者來「適配」他,最終使得他能夠很其他的成員一起打球(這裡講到的主要是物件介面卡)
模式中的成員:
目標介面(target):客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。
需要適配的類(adaptee):需要適配的類或適配者類。
介面卡(adapter):通過包裝乙個需要適配的物件,把原介面轉換成目標介面。
例子中的成員:
球員—target:具有同一種語言的球員
翻譯者-adapter:將外籍中鋒的語言進行翻譯,使得外籍中鋒能夠理解球員類的語言
外籍中鋒-adaptee:和球員們的語言不同,需要翻譯者
圖中可以看出每個球員都可以接受教練的兩個命令,但是外籍中鋒能夠理解的語言和其他的球員不同,所以需要翻譯者的翻譯
**
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace 介面卡模式
//在子類中重寫
//進攻方法
public abstract void attack();
//防守方法
public abstract void defense();}}
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace 介面卡模式
//最後:進行翻譯工作--重寫球員的方法
//如何實現:呼叫外籍中鋒的方法--也就是說翻譯者將attack和defense翻譯給了外籍球員;使得外籍球員在聽到attack和defense知道呼叫哪種方法
public override void attack()
public override void defense()}}
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace 介面卡模式
set
}//進攻和防守方法-
//和前面的不同:方法的名字是中文
public void 進攻()
進攻",name);
}public void 防守()
防守",name);}}
}
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace 介面卡模式
//在子類中重寫進攻和防守兩個方法
public override void attack()
進攻",name);
}public override void defense()
防守",name);}}
}
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace 介面卡模式
//在子類中重寫進攻和防守兩個方法
public override void attack()
進攻",name);
}public override void defense()
防守",name);}}
}
客戶端**:
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace 介面卡模式}}
執行結果:
介面卡模式解析例子
本文深入淺出的講述了設計模式中的介面卡模式 並給出了簡單的示例 例子淺顯易懂 並附帶源 介面卡模式中的有以下的四種角色 目標 target 被適配者 adaptee 定義了乙個已經存在的介面,這個介面需要匹配。適配者 adapter 對adaptee 的介面與 target 的介面進行適配。客戶端 ...
介面卡模式 個人理解 JAVA 小例子
首先申明兩個互不相關的介面,乙個用來定義android充電線插口標準,乙個定義iphone 6充電線插口標準 android插口標準 package com.adaptor public inte ce androidusbiphone 6插口標準 package com.adaptor publi...
介面卡模式的理解
介面卡模式用於 系統的資料和行為都正確,但介面不符時,應該考慮用介面卡,目的是使控制範圍之外的乙個原有物件與某個介面匹配。介面卡模式主要應用於希望復用一些現存的類,但是介面又與復用環境要求不一致的情況,比如在需要對早期 復用一些功能等應用上很有實際價值。自己翻譯就是 已經有了乙個早期的抽象的介面或者...