3.1 Adapter(适配器)
生活随笔
收集整理的這篇文章主要介紹了
3.1 Adapter(适配器)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【返回目錄】
某地新建了一座懷舊風格的酒店,一切都按照上個世紀中期的歐美風格來設計。當地一個頗有實力的電器批發商好不容易搶到了一張訂單,這家酒店要購進100個懷舊風格的電風扇。批發商找到當地一個頗有規模的電器生產廠家,該廠家正好有一個型號的電風扇是懷舊風格的,但不巧的是,這批電風扇都是兩向插頭,而酒店需要的是三向的。你認為生產廠家會怎么辦,告訴批發商:“對不起,這單生意我們做不了。”或是“去,告訴酒店老板,讓他們修改電路,給電風扇準備好一個兩向插口。”呢?顯然,任何一個正常的老板都知道,最明智的辦法就是讓電風扇具備一個二轉三的轉接頭,這樣的做法是最快也是最有效率的。
Adapter(適配器)模式就是用來解決這樣場景的問題的,根據客戶的需要轉換類的接口,使得原本不兼容的類可以在一起工作。
1: using System; 2:? 3: namespace Autumoon.DesignPatterns.Adapter 4: { 5: public class OriginalFan 6: { 7: public virtual void WorkWithTwoPins(int pinAmount) 8: { 9: if (pinAmount != 2) 10: { 11: return; 12: } 13:? 14: Console.WriteLine("This fan can work with 2 pins."); 15: } 16: } 17:? 18: public class HotelFan 19: { 20: public void WorkWithThreePins(int pinAmount) 21: { 22: if (pinAmount != 3) 23: { 24: return; 25: } 26:? 27: Console.WriteLine("This fan can work with 3 pins."); 28: } 29: } 30:? 31: public class FanAdapter : OriginalFan 32: { 33: private HotelFan hotelFan = new HotelFan(); 34:? 35: public override void WorkWithTwoPins(int pinAmount) 36: { 37: hotelFan.WorkWithThreePins(pinAmount); 38: } 39: } 40:? 41: public static class FanUsage 42: { 43: public static void ConnectFan(OriginalFan originalFan) 44: { 45: originalFan.WorkWithTwoPins(3); 46: } 47: } 48: }從上面的代碼我們可以看到,我們有一個原廠生產的兩向插頭的電風扇OriginalFan類和一個酒店所使用的三項插頭的HotelFan類,以及這二者中間所采用的轉接頭FanAdapter。接下來我們就用這個轉接頭使得這種原本兩向插頭的電風扇可以在酒店中使用吧。
1: static void Main(string[] args) 2: { 3: OriginalFan originalFan = new FanAdapter(); 4: FanUsage.ConnectFan(originalFan); 5:? 6: Console.ReadLine(); 7: }總結
以上是生活随笔為你收集整理的3.1 Adapter(适配器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 力挺2007年国内原创音乐届最权威大赛!
- 下一篇: 为ListBox添加水平滚动条