設計模式一一適配器模式

設計模式 工商銀行 建設銀行 技術 達人科技 2017-03-23

適配器模式

一、適配器模式

  • 1、定義
  • 2、理解
  • 3、適配器模式分為

二、類的適配器模式

實例:使用銀行卡支付的時候,客戶可以選擇工商銀行卡支付或者建設銀行卡支付,但兩個銀行提供不同的支付接口。

1、 類的適配器模式UML類圖

設計模式一一適配器模式

2、 類的適配器模式代碼實例

① 支付類代碼

    //工商支付類
    public class ICBC
    {
        public void icbcPay
        {
 Console.WriteLine("工商銀行付款接口~~~~");
        }
    }

    //建設支付類
    public class CCB
    {
        public void ccbPay
        {
 Console.WriteLine("建設銀行付款接口~~~~");
        }
    }

② 轉換代碼(插銷轉換器)

    //適配器 插銷轉換代碼
    public interface Ipay
    {
        void Pay;
    }

③ 對應各種情況的轉換代碼

    //工商銀行的插銷轉換
    public class ICBCApter : ICBC, Ipay
    {
        public void Pay
        {
 base.icbcPay;
        }
    }

    //建設銀行的插銷轉換
    public class CCBApter : CCB, Ipay
    {
        public void Pay
        {
 base.ccbPay;
        }
    }

④ 客戶端引用接口代碼

namespace 適配器模式One
{
        class Program
        {
 static void Main(string[] args)
 {
 Ipay ipay = new ICBCApter;//Adapter適配器
 ipay.Pay;//輸出工商銀行
 Console.WriteLine("----------------------------");
 Ipay cpay = new CCBApter;
 cpay.Pay;//輸出建設銀行
 Console.Read;
 }
         }
}

3、實例UML類圖(此類圖由VS2012自動生成)

設計模式一一適配器模式

三、對象的適配器模式

1、 對象的適配器模式代碼實例

① 支付類代碼

    //工商支付類
    public class ICBC
    {
        public void icbcPay
        {
 Console.WriteLine("工商銀行接口付款~~~~");
        }
    }
    //建設支付類
    public class CCB
    {
        public void ccbPay
        {
 Console.WriteLine("建設銀行接口付款~~~~");
        }
    }

② 適配器代碼

    //適配器 插銷轉換代碼
    public interface Ipay
    {
        void Pay;
    }

③ 對應各種情況,通過適配器使用的代碼

    //工商銀行的插銷轉換
    //適配器類,這裡適配器類沒有ICBC類,
    //而是引用了ICBC對象,所以是對象的適配器模式的實現
    public class ICBCApter : Ipay
    {
        ICBC icbc = new ICBC;
        public void Pay
        {
 icbc.icbcPay;
        }
    }
    //建設銀行的插銷轉換
    public class CCBApter : CCB, Ipay
    {
        CCB ccb = new CCB;
        public void Pay
        {
 ccb.ccbPay;
        }
    }

④ 客戶端代碼

namespace 適配器模式_對象的適配器模式
{
    class Program
    {
        static void Main(string[] args)
        {
 Ipay pay = new ICBCApter;
 pay.Pay;
 Console.WriteLine("-------------------------");
 Ipay payT = new CCBApter;
 payT.Pay;
 Console.Read;
        }
    }
}

2、 實例UML類圖(此類圖由VS2012自動生成)

設計模式一一適配器模式

四、優缺點

1、 類的適配器模式

優點

① 在不修改原代碼的基礎上覆用現有類

缺點

① 採用了“多繼承”,使得耦合度較高

2、 對象的適配器模式

優點

① 採用“對象組合”方式,降低了耦合度

② 在不修改原代碼的基礎上覆用現有類

缺點:(暫不清楚)

五、使用場景

1、 系統需要複用現有類

2、 想要建立一個可重複使用的類

相關推薦

推薦中...