您的位置:首頁>正文

設計模式一一適配器模式

適配器模式

一、適配器模式

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、 想要建立一個可重複使用的類

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示