適配器模式
一、適配器模式
- 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、 想要建立一個可重複使用的類
相關推薦
推薦中...