一、定義
適配器模式:將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
解釋:適配器模式好比一個電源適配器,生活中房間內的電壓是220v,但是你的很多用電器就不是220v,比如電腦、手機等等,這是需要電源適配器來調節電壓,使用電源適配器充電的過程就相當于適配器模式。
二、UML類圖、基本代碼
基本代碼:
class PRogram { static void Main(string[] args) { Target target = new Adapter(); target.Request(); Console.Read(); } } class Target { public virtual void Request() { Console.WriteLine("commom request"); } } class Adaptee { public void SpecificalRequest() { Console.WriteLine("specifical Request"); } } class Adapter : Target { private Adaptee adptee = new Adaptee(); public override void Request() { adptee.SpecificalRequest(); } }
三、舉例說明
國內電壓是220v,朋友從國外購買一家用電器的工作電壓是110v,這算是一個特殊需求。此時就需要電源適配器供電工作。代碼如下:
class Program { static void Main(string[] args) { China china = new Adapter(); china.Request(); Console.Read(); } } //國內供電 class China { public virtual void Request() { Console.WriteLine("the voltage is 220v"); } } //用電器供電特殊需求 class Foreign { public void SpecificalRequest() { Console.WriteLine("the voltage is 110v"); } } //電源適配器 class Adapter : China { private Foreign foreign = new Foreign(); public override void Request() { foreign.SpecificalRequest(); } }
四、優缺點及適用場景
優點:
1)可以在不修改原有代碼的基礎上復用現有的類,很好的遵守“開閉原則”.
缺點:
針對基本代碼,重定義Adaptee的行為比較困難,這就需要生成Adaptee的子類并且使得Adapter引用這個子類而不是Adaptee本身。
適用場景:
系統需要復用現有類,而該類的接口不符合系統的需求。
新聞熱點
疑難解答