日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#實例解析適配器設計模式

今天看到一個園子里的朋友寫了一篇ASP.NET的適配器設計模式的文章。其中提到了把輸入的電壓轉換成燈泡適合的電壓,這樣才能使燈泡正常工作。正巧,我也在學習設計模式,其中翻看了一下秦小波寫的《設計模式與禪》這本書,其中提到了設計模式的定義為:

將一個類的接口變成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠一起工作。

適配器模式又叫變壓器模式,也叫包裝模式。

這里作者舉得例子并沒有實現(xiàn)把一個接口或類轉換到另外一個可以使用的類,僅僅是把輸入?yún)?shù)做了判斷,這是不是適配器模式我不予置評,下面貼出我實現(xiàn)的適配器模式。

我們知道,中國的電壓是220V,而日本的電壓為110V,我們中國生產(chǎn)的電燈泡一般額定電壓為220V,如果想要這個燈泡在日本能夠正常工作就必須使用一個適配器,把110V電壓轉換成220V電壓。

定義接口代碼如下:

 
 
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5.  
  6. namespace HelloWorld  
  7. {  
  8.     ///   
  9.     /// 中國電接口  
  10.     ///   
  11.     public interface IChinaElectricity  
  12.     {  
  13.         ///   
  14.         /// 電壓  
  15.         ///   
  16.         ///   
  17.         int Voltage();  
  18.     }  
  19.     ///   
  20.     /// 日本電接口  
  21.     ///   
  22.     public interface IJapanElectricity  
  23.     {  
  24.         ///   
  25.         /// 電壓  
  26.         ///   
  27.         ///   
  28.         int Voltage();  
  29.     }  
  30.     ///   
  31.     /// 燈接口  
  32.     ///   
  33.     public interface IChinaLight  
  34.     {  
  35.         ///   
  36.         /// 發(fā)光  
  37.         ///   
  38.         ///   
  39.         string Light(int voltage);  
  40.     }  

定義的類如下:

 
 
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5.  
  6. namespace HelloWorld  
  7. {  
  8.     public class ChinaElectricity : IChinaElectricity  
  9.     {  
  10.         public int Voltage()  
  11.         {  
  12.             return 220;  
  13.         }  
  14.     }  
  15.  
  16.     public class JapanElectricity : IJapanElectricity  
  17.     {  
  18.         public int Voltage()  
  19.         {  
  20.             return 110;  
  21.         }  
  22.     }  
  23.  
  24.     public class ChinaLight : IChinaLight  
  25.     {  
  26.         ///   
  27.         /// 發(fā)光  
  28.         ///   
  29.         ///   
  30.         public string Light(int voltage)  
  31.         {  
  32.             if (voltage == 220)  
  33.             {  
  34.                 return "我發(fā)光啦....";  
  35.             }  
  36.             else 
  37.             {  
  38.                 return ("電壓不正確,無法正常工作...");  
  39.             }  
  40.         }  
  41.     }  
  42.     ///   
  43.     /// 定義一個電壓適配器  
  44.     ///   
  45.     public class ElectricityAdapter : IChinaElectricity  
  46.     {  
  47.         private int voltage = 0;  
  48.         private IJapanElectricity iJElectricity = null;  
  49.           
  50.         public ElectricityAdapter(IJapanElectricity _baseElectricity)  
  51.         {  
  52.             iJElectricity = _baseElectricity;  
  53.             voltage = this.iJElectricity.Voltage();  
  54.         }  
  55.         public int Voltage()  
  56.         {  
  57.             return voltage + 110;  
  58.         }  
  59.     }  

這里面我們定義了一個適配器的類,把日本電壓適配成中國電壓,這樣才能夠使燈泡正常工作。代碼如下:

 
 
 
  1. static void Main(string[] args)  
  2.         {  
  3.  
  4.             //初始化一個中國電燈  
  5.             IChinaLight iCLight = new ChinaLight();  
  6.             //初始化中國的電  
  7.             IChinaElectricity iCElectricity = new ChinaElectricity();  
  8.             //初始化日本電  
  9.             IJapanElectricity iJElectricity =new JapanElectricity();  
  10.  
  11.             //使用適配器  
  12.             IChinaElectricity iCAElectricity = new ElectricityAdapter(iJElectricity);  
  13.  
  14.             //電壓正確電燈發(fā)光  
  15.             Console.WriteLine(iCLight.Light(iCElectricity.Voltage()));  
  16.  
  17.             //使用電壓適配器進行適配  
  18.             Console.WriteLine(iCLight.Light(iCAElectricity.Voltage()));  
  19.  
  20.             //電壓不正確,電燈產(chǎn)生異常  
  21.             Console.WriteLine(iCLight.Light(iJElectricity.Voltage()));  
  22.               
  23.         } 

通過適配器模式的定義可以知道,其實適配器模式無非是把一種已經(jīng)無法修改,或是修改成本較高的源角色通過適配角色轉換成目標角色,這樣整個業(yè)務體系才能夠在代價最小的情況下進行正常運行。

適配器模式的優(yōu)點:

適配器模式可以讓兩個沒有任何關系的類在一起運行,只要適配器這個角色能夠搞定他們就行。

  • 增加了類的透明性。
  • 提高了類的復用度。
  • 靈活性非常好。

適配器模式的使用場景:

適配器應用場景只要記住一點就足夠了:你有動機修改一個已經(jīng)投產(chǎn)中的接口時,適配器模式可能是最適合你的模式。比如系統(tǒng)擴展了,只需要一個已有或新建立的類,但這個類又不符合系統(tǒng)的接口,這個時候使用適配器模式比修改已存在的類代價要小的多。

原文鏈接:http://www.cnblogs.com/lifeil/archive/2013/02/25/2932178.html


網(wǎng)頁題目:C#實例解析適配器設計模式
當前網(wǎng)址:http://www.dlmjj.cn/article/dhgphsi.html