適配器設計模式

來源:互聯網
上載者:User
 

適配器設計模式是把一個類的介面轉化成用戶端期望的介面,從而使原本介面不匹配的兩個類能一起工作。

實際中這種情境很容易碰到,比如A類型手機充電器需要10V電壓充電,B類型手機需要15V電壓充電。A類型手機的充電器價格非常昂貴,而B類型的充電器價格低廉。市場就有可能出現把B型充電器轉換成A型手機匹配的適配器。

適配器設計模式有兩種:

類適配器:使用繼承實現介面轉換。

執行個體適配器:使用組合實現介面轉換。

類適配器類圖:類適配器設計的角色:

源:被適配的類。

目標:客戶期望的介面.由於適配器需要繼承源。所以目標必須是介面。

適配器:把源介面轉換成目標介面。適配器需要繼承源。

代碼:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Hbb0b0.DesignPatter

{

/// <summary>

/// 源:被適配者

/// </summary>

public class Adaptee

{

/// <summary>

/// 響應特殊的請求

/// </summary>

public void SpecialRequest()

{

Console.WriteLine("Call SpecialRequest");

}

}

/// <summary>

/// 目標:用戶端期望的介面。必須是介面

/// </summary>

public interface ITarget

{

/// <summary>

/// 用戶端期望的響應要求方法

/// </summary>

void Request();

}

/// <summary>

/// 適配器

/// </summary>

public class ClassAdapter : Adaptee,ITarget

{

#region ITarget 成員

/// <summary>

/// 實現期望的介面

/// </summary>

public void Request()

{

base.SpecialRequest();

}

#endregion

}

}

調用樣本:

//類適配器

Console.WriteLine("類適配器");

ITarget iTarget = new ClassAdapter();

iTarget.Request();

執行個體適配器類圖執行個體適配器設計的角色:

源:被適配的類。

目標:客戶期望的介面.由於適配器中封裝源。所以目標可以是類,抽象類別,介面。

適配器:把源介面轉換成目標介面。適配器封裝源。

代碼:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Hbb0b0.DesignPatter

{

/// <summary>

/// 源:被適配者

/// </summary>

public class Adaptee

{

/// <summary>

/// 響應特殊的請求

/// </summary>

public void SpecialRequest()

{

Console.WriteLine("Call SpecialRequest");

}

}

/// <summary>

/// 目標:用戶端可以期望介面,可以是具體類也可以是抽象類別,

/// 也可以是介面

/// </summary>

public class Target

{

/// <summary>

/// 期望的方法

/// </summary>

virtual public void Request()

{

}

}

}

/// <summary>

/// 適配器:內部封裝源,把源介面轉換成目標介面

/// </summary>

public class InstanceAdapter : Target

{

private Adaptee adaptee = null;

public InstanceAdapter(Adaptee adt )

{

adaptee = adt;

}

public override void Request()

{

adaptee.SpecialRequest();

}

}

}

調用樣本:

//對象適配器

Console.WriteLine("對象適配器");

Adaptee adt=new Adaptee ();

Target target = new InstanceAdapter(adt );

target.Request();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.