定義:
將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原來由於接口不兼容而不能一起工作的類可以一起工作。
類型:
結構型模式
分類:類適配器模式和對象適配器模式
類適配器模式通過多重繼承對接口進行匹配,而C#、VB.NET、JAVA等語言不支持多重繼承,一個類只允許有一個父類。所以我們主要介紹的是對象適配器模式。
類圖:
代碼:
[csharp]
//Target類
class Target
{
public virtual void Request()
{
Console.WriteLine("普通請求!");
}
}
[csharp]
//Adaptee類
class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("特殊請求!");
}
}
[csharp]
//Adapter類
class Adapter : Target
{
private Adaptee adaptee = new Adaptee(); //建立一個私有的Adaptee對象
public override void Request()
{
adaptee.SpecificRequest();
}
}
[csharp]
//客戶端代碼
Target target = new Adapter(); //實例化對象
target.Request();
Console.Read();
優點和適用范圍:
兩個類所做的事情相同或相似,希望復用這些現存的類,但是具有不同的接口與復用環境要求不一致,並且雙方都不太容易修改的時候,此時應該考慮使用適配器模式。
適配器模式可以使客戶代碼統一調用同一接口,更加簡單、直接和緊湊。
注意事項:
適配器模式是在軟件開發後期或維護期再考慮使用的模式。
1、在軟件設計階段,事先預防接口不同的問題,就不會發生不匹配問題;
2、如果有接口不統一問題發生時,首先應該考慮及時重構統一接口;
3、只有碰到無法改變原有設計和代碼的情況時,才考慮適配。