天天看點

設計模式Adapter模式的五分鐘

五分鐘一個設計模式。來形容叙述的設計模式的最簡單方法。看到許多其他設計模式,請點選五分鐘一個設計模式系列

http://blog.csdn.net/daguanjia11/article/category/3259443

認識擴充卡模式

擴充卡模式的定義是:将一個類的接口轉換成client希望的另外一個接口。

擴充卡模式使得原本因為接口不相容而不能一起工作的那些類能夠一起工作。

擴充卡模式的主要功能是轉換接口,目的是複用已有功能。而不是實作新接口,适用于功能實作了但接口不相容的場合。

擴充卡組合了原有對象,而且提供與一個client相容的接口,實際的工作由原有接口完畢。

示範樣例代碼

以下的示範樣例代碼中主要包括以下部分:

  1. Target:client須要的接口,與特定領域相關
  2. Adaptee:被适配對象
  3. Adapter:擴充卡

來上代碼:

/// <summary>
/// client須要的接口,與特定領域相關
/// </summary>
public interface Target
{
    /// <summary>
    /// client請求處理的方法
    /// </summary>
    void Request();
}
           
/// <summary>
/// 被适配對象
/// </summary>
public class Adaptee
{
    /// <summary>
    /// 原有的已經實作了的方法,但接口發生了變化
    /// </summary>
    public void OldRequest()
    {
        Console.WriteLine("原來的方法運作了");
    }
}
           
/// <summary>
/// 擴充卡
/// </summary>
public class Adapter : Target
{
    /// <summary>
    /// 組合被适配的對象
    /// </summary>
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee)
    {
        this.adaptee = adaptee;
    }

    public void Request()
    {
        this.adaptee.OldRequest();
    }
}
           

以下看client怎樣使用

class Program
{
    static void Main(string[] args)
    {
        //建立被适配對象
        Adaptee adaptee = new Adaptee();
        //建立client須要調用的接口對象
        Target target = new Adapter(adaptee);
        //請求處理
        target.Request();
    }
}
           

程式運作結果:

原來的方法運作了

繼續閱讀