成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#實例解析適配器設計模式

開發 后端
在ASP.NET的適配器設計模式的文章中作者舉得例子并沒有實現把一個接口或類轉換到另外一個可以使用的類,僅僅是把輸入參數做了判斷,這是不是適配器模式我不予置評,下面貼出我實現的適配器模式。

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

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

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

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

我們知道,中國的電壓是220V,而日本的電壓為110V,我們中國生產的電燈泡一般額定電壓為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.     /// <summary>  
  9.     /// 中國電接口  
  10.     /// </summary>  
  11.     public interface IChinaElectricity  
  12.     {  
  13.         /// <summary>  
  14.         /// 電壓  
  15.         /// </summary>  
  16.         /// <returns></returns>  
  17.         int Voltage();  
  18.     }  
  19.     /// <summary>  
  20.     /// 日本電接口  
  21.     /// </summary>  
  22.     public interface IJapanElectricity  
  23.     {  
  24.         /// <summary>  
  25.         /// 電壓  
  26.         /// </summary>  
  27.         /// <returns></returns>  
  28.         int Voltage();  
  29.     }  
  30.     /// <summary>  
  31.     /// 燈接口  
  32.     /// </summary>  
  33.     public interface IChinaLight  
  34.     {  
  35.         /// <summary>  
  36.         /// 發光  
  37.         /// </summary>  
  38.         /// <returns></returns>  
  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.         /// <summary>  
  27.         /// 發光  
  28.         /// </summary>  
  29.         /// <returns></returns>  
  30.         public string Light(int voltage)  
  31.         {  
  32.             if (voltage == 220)  
  33.             {  
  34.                 return "我發光啦....";  
  35.             }  
  36.             else 
  37.             {  
  38.                 return ("電壓不正確,無法正常工作...");  
  39.             }  
  40.         }  
  41.     }  
  42.     /// <summary>  
  43.     /// 定義一個電壓適配器  
  44.     /// </summary>  
  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.             //電壓正確電燈發光  
  15.             Console.WriteLine(iCLight.Light(iCElectricity.Voltage()));  
  16.  
  17.             //使用電壓適配器進行適配  
  18.             Console.WriteLine(iCLight.Light(iCAElectricity.Voltage()));  
  19.  
  20.             //電壓不正確,電燈產生異常  
  21.             Console.WriteLine(iCLight.Light(iJElectricity.Voltage()));  
  22.               
  23.         } 

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

適配器模式的優點:

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

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

適配器模式的使用場景:

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

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

責任編輯:林師授 來源: 博客園
相關推薦

2024-07-31 10:41:16

C#設計模式

2020-10-25 08:56:21

適配器模式

2012-05-16 17:22:11

Java設計模式

2021-02-18 08:39:28

設計模式場景

2013-11-26 16:39:21

Android設計模式

2022-02-18 17:21:29

適配器模式客戶端

2022-02-13 23:33:24

設計模式Java

2024-02-22 12:13:49

適配器模式代碼

2014-07-17 10:55:10

Win8.1應用開發適配器模式

2012-04-12 09:33:02

JavaScript

2022-05-29 22:55:00

適配器設計模式

2009-11-18 18:08:20

PHP適配器模式

2022-12-12 09:20:59

適配器模式接口

2021-08-16 17:15:19

設計模式Android適配器模式

2012-08-02 10:46:34

JavaAdapter模式

2024-04-10 12:27:43

Python設計模式開發

2021-02-16 08:16:09

適配器模式MybatisJava

2011-04-28 09:54:50

jQuery

2023-08-15 11:07:37

適配器模式TypeScript

2012-09-19 15:29:26

Worklight適配器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日干干夜夜 | 一级毛片免费 | 久久av在线播放 | 草久视频 | 久热m3u8 | 亚洲网在线 | 欧美成视频在线观看 | 免费的一级视频 | 精品欧美一区二区三区 | 日韩一 | 国产网站在线免费观看 | 日韩有码一区 | 三级免费网 | 亚洲视频在线一区 | 久久成人综合 | 日本免费一区二区三区四区 | 一区二区三区国产精品 | 91亚洲免费 | 日本一区二区在线视频 | 五月激情综合 | 国产高清免费在线 | 日本亚洲欧美 | 二区久久| 成人在线免费观看 | 91毛片网 | 麻豆av电影网 | 国产成人网| 成人av一区二区三区 | 亚洲啪啪| 久久久91精品国产一区二区三区 | 午夜免费视频 | 国产丝袜人妖cd露出 | 久久69精品久久久久久久电影好 | 男女精品网站 | 91精品国产综合久久婷婷香蕉 | 在线观看黄免费 | 91麻豆精品国产91久久久资源速度 | 亚洲一区二区视频在线播放 | 午夜欧美| 天天看天天干 | 日韩www|