曾經有一副小米耳機擺在我的面前,但是我沒有去好好珍惜,直到她掉到我的水杯里我才后悔莫及,塵世間最痛苦的事莫過于此,如果上天再給我一次機會,我會對你說:我應該買個防水的耳機。話說昨天晚上回到宿舍,禁不住美食的誘惑,大晚上的,咱不能吃,看看也行啊,于是,百度搜索“舌尖上的中國”,看看看著,感覺口渴,于是蹭蹭蹭趕緊找水喝,喝水的時候還不忘把手機拿在手里,耳機插在耳朵里,說時遲,那時快,我的耳機涼快的洗了個澡,可能是因為天氣比較熱,耳機也想涼快涼快。
我去市面上沒有找到2.5的耳機,基本上是3.5接口,沒辦法我只好買了個3.5接口的耳機,老板告訴你:“我給你一個適配器”這不問題就解決了。3.5的接口的耳機在我手機上本來是沒法使用的,因為它沒有按照2.5接口的設計,而現在我又想使用這幅耳機,于是乎有了“適配器(Adapter)”這個一個東西出來了。Adapter模式的定義:把一個類的接口變換成客戶端所期待的另外一種接口,使得原本由于接口不兼容而不能再一起工作的那些類可以一起工作。我的耳機插口是2,5的,倒霉熊孩子,買錯了,買了一個3.5的,怎么辦呢?這個時候需要一個“適配器”來幫助我解決問題。今天的設計模式就從我們的耳機開始說起---適配器模式。首先來看看我們適配器的結構圖:
? ? ? ? ? ??
對上面的類圖進行一些闡述:
目標接口(Target):客戶所期待的接口。目標可以是具體的或抽象的類,也可以是接口。
需要適配的類(Adaptee):需要適配的類或適配者類。
適配器(Adapter):通過包裝一個需要適配的對象,把原接口轉換成目標接口。
接下來,以上面的例子,看看我們的代碼實現:
? ? ? ? ? ?
~~~
using?System;??
using?System.Collections.Generic;??
using?System.Linq;??
using?System.Text;??
using?System.Threading.Tasks;??
??
namespace?ConsoleApplication1??
{??
????class?Program??
????{??
????????static?void?Main(string[]?args)??
????????{??
????????????Target?target?=?new?Adapter();??
????????????target.Provide2_5();??
????????????Console.Read();??
????????}??
????}??
????//Targe?這里相當于2.5插孔的耳機??
????class?Target??
????{??
??????public?virtual?void??Provide2_5()??
??????{??
??????????Console.WriteLine("我是2.5的接口");??
??????}??
?????}??
??
??
??
????//Adaptee?這里相當于3.5插孔的耳機??
????class?Adaptee??
????{??
???????public?virtual?void??Provide3_5()??
??????{??
????????Console.WriteLine("我是3.5的接口");??
??????}??
????}??
??
??
????//Adapter?這里相當于轉換器??
????class?Adapter:Target??
????{??
???????private?Adaptee?adaptee?=?new?Adaptee();??
???????public?override?void?Provide2_5()??
??????{??
???????????adaptee.Provide3_5();??
??????}??
????}??
}??
~~~
編程如人生,合適的才是最好的,鷹擊長空,魚翔潛底,大自然因它們而變得豐富多彩,只因它們找到了適合自己的位置。人類也是如此,找到屬于自己的位置,你的人生才會充滿意義。? ?