>>回傳《C#常用設計模式》
- 1. 簡介
- 2. 示例
- 3. 說明
1. 簡介
- 概述
- 將一個類的介面轉換成客戶希望的另外一個介面,
- 解決的問題
- 即Adapter模式使得原本由于介面不兼容而不能一起作業的那些類可以在一起作業,
- 配接器模式中的角色
- 目標介面(Target):程式呼叫所期待的介面,目標可以是具體的或抽象的類,也可以是介面;
- 需要適配的類(Adaptee):需要被適配的類或適配者類;
- 配接器(Adapter):通過包裝一個適配兩者的物件,將原介面與目標介面適配;
- 比喻:好比手機充電,不同的國家使用不同電壓的電源,我們手機充電需要不同的配接器來適配電壓
- Adaptee: 家用電源
- Target: 手機電源介面
- Adapter: 手機充電器
- 配接器模式的類圖

適配介面可采用實作Target介面和繼承Adaptee類的方式,

適配兩個類,可采用繼承Target類和依賴Adaptee物件的方式
2. 示例
/// <summary>
/// 定義客戶端期待的介面
/// </summary>
public class Target
{
/// <summary>
/// 使用virtual修飾以便子類可以重寫
/// </summary>
public virtual void Request()
{
Console.WriteLine("This is a common request");
}
}
/// <summary>
/// 定義需要適配的類
/// </summary>
public class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("This is a special request.");
}
}
/// <summary>
/// 定義配接器
/// </summary>
public class Adapter:Target
{
// 建立一個私有的Adeptee物件
private Adaptee adaptee = new Adaptee();
/// <summary>
/// 通過重寫,表面上呼叫Request()方法,變成了實際呼叫SpecificRequest()
/// </summary>
public override void Request()
{
adaptee.SpecificRequest();
}
}
//Client代碼
class Program
{
static void Main(string[] args)
{
// 對客戶端來說,呼叫的就是Target的Request()
Target target = new Adapter();
target.Request();
Console.Read();
}
}
3. 說明
- 配接器模式是典型的面向抽象設計
- 已有的抽象實作棄用,而且有可兼容的封裝可以使用,則很適合使用此模式
- 比如:sdk更換、資料庫訪問驅動的更換、資料傳輸方式的更換等等
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/259953.html
標籤:設計模式
上一篇:Prototype原型模式
下一篇:Prototype原型模式
