您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)C#如何解析適配器設(shè)計模式,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
今天看到一個園子里的朋友寫了一篇ASP.NET的適配器設(shè)計模式的文章。其中提到了把輸入的電壓轉(zhuǎn)換成燈泡適合的電壓,這樣才能使燈泡正常工作。正巧,我也在學習設(shè)計模式,其中翻看了一下秦小波寫的《設(shè)計模式與禪》這本書,其中提到了設(shè)計模式的定義為:
將一個類的接口變成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠一起工作。
適配器模式又叫變壓器模式,也叫包裝模式。
我們知道,中國的電壓是220V,而日本的電壓為110V,我們中國生產(chǎn)的電燈泡一般額定電壓為220V,如果想要這個燈泡在日本能夠正常工作就必須使用一個適配器,把110V電壓轉(zhuǎn)換成220V電壓。這里作者舉得例子并沒有實現(xiàn)把一個接口或類轉(zhuǎn)換到另外一個可以使用的類,僅僅是把輸入?yún)?shù)做了判斷,這是不是適配器模式我不予置評,下面貼出我實現(xiàn)的適配器模式。
定義接口代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HelloWorld { /// <summary> /// 中國電接口 /// </summary> public interface IChinaElectricity { /// <summary> /// 電壓 /// </summary> /// <returns></returns> int Voltage(); } /// <summary> /// 日本電接口 /// </summary> public interface IJapanElectricity { /// <summary> /// 電壓 /// </summary> /// <returns></returns> int Voltage(); } /// <summary> /// 燈接口 /// </summary> public interface IChinaLight { /// <summary> /// 發(fā)光 /// </summary> /// <returns></returns> string Light(int voltage); } }
定義的類如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HelloWorld { public class ChinaElectricity : IChinaElectricity { public int Voltage() { return 220; } } public class JapanElectricity : IJapanElectricity { public int Voltage() { return 110; } } public class ChinaLight : IChinaLight { /// <summary> /// 發(fā)光 /// </summary> /// <returns></returns> public string Light(int voltage) { if (voltage == 220) { return "我發(fā)光啦...."; } else { return ("電壓不正確,無法正常工作..."); } } } /// <summary> /// 定義一個電壓適配器 /// </summary> public class ElectricityAdapter : IChinaElectricity { private int voltage = 0; private IJapanElectricity iJElectricity = null; public ElectricityAdapter(IJapanElectricity _baseElectricity) { iJElectricity = _baseElectricity; voltage = this.iJElectricity.Voltage(); } public int Voltage() { return voltage + 110; } } }
這里面我們定義了一個適配器的類,把日本電壓適配成中國電壓,這樣才能夠使燈泡正常工作。代碼如下:
static void Main(string[] args) { //初始化一個中國電燈 IChinaLight iCLight = new ChinaLight(); //初始化中國的電 IChinaElectricity iCElectricity = new ChinaElectricity(); //初始化日本電 IJapanElectricity iJElectricity =new JapanElectricity(); //使用適配器 IChinaElectricity iCAElectricity = new ElectricityAdapter(iJElectricity); //電壓正確電燈發(fā)光 Console.WriteLine(iCLight.Light(iCElectricity.Voltage())); //使用電壓適配器進行適配 Console.WriteLine(iCLight.Light(iCAElectricity.Voltage())); //電壓不正確,電燈產(chǎn)生異常 Console.WriteLine(iCLight.Light(iJElectricity.Voltage())); }
通過適配器模式的定義可以知道,其實適配器模式無非是把一種已經(jīng)無法修改,或是修改成本較高的源角色通過適配角色轉(zhuǎn)換成目標角色,這樣整個業(yè)務(wù)體系才能夠在代價最小的情況下進行正常運行。
適配器模式的優(yōu)點:
適配器模式可以讓兩個沒有任何關(guān)系的類在一起運行,只要適配器這個角色能夠搞定他們就行。
增加了類的透明性。
提高了類的復(fù)用度。
靈活性非常好。
適配器模式的使用場景:
適配器應(yīng)用場景只要記住一點就足夠了:你有動機修改一個已經(jīng)投產(chǎn)中的接口時,適配器模式可能是最適合你的模式。比如系統(tǒng)擴展了,只需要一個已有或新建立的類,但這個類又不符合系統(tǒng)的接口,這個時候使用適配器模式比修改已存在的類代價要小的多。
關(guān)于C#如何解析適配器設(shè)計模式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。