C# 設計形式系列教程-適配器形式。本站提示廣大學習愛好者:(C# 設計形式系列教程-適配器形式)文章只能為提供參考,不一定能成為您想要的結果。以下是C# 設計形式系列教程-適配器形式正文
1. 概述
將一個類的接口轉換成客戶願望的別的一個接口。Adapter形式使得本來因為接口不兼容而不克不及一路任務的那些類可以在一路任務。
2. 處理的成績
即Adapter形式使得本來因為接口不兼容而不克不及一路任務的那些類可以在一路任務。
3. 形式中的腳色
3.1 目的接口(Target):客戶所等待的接口。目的可所以詳細的或籠統的類,也能夠是接口。
3.2 須要適配的類(Adaptee):須要適配的類或適配者類。
3.3 適配器(Adapter):經由過程包裝一個須要適配的對象,把原接口轉換成目的接口。
4. 形式解讀
注:在GoF的設計形式中,對適配器形式講了兩品種型,類適配器形式和對象適配器形式。因為類適配器形式經由過程多重繼續對一個接口與另外一個接口停止婚配,而C#、java等說話都不支撐多重繼續,因此這裡只是引見對象適配器。
4.1 適配器形式的類圖
4.2 適配器形式的代碼完成
/// <summary> /// 界說客戶端等待的接口 /// </summary> public class Target { /// <summary> /// 應用virtual潤飾以便子類可以重寫 /// </summary> public virtual void Request() { Console.WriteLine("This is a common request"); } } /// <summary> /// 界說須要適配的類 /// </summary> public class Adaptee { public void SpecificRequest() { Console.WriteLine("This is a special request."); } } /// <summary> /// 界說適配器 /// </summary> public class Adapter:Target { // 樹立一個公有的Adeptee對象 private Adaptee adaptee = new Adaptee(); /// <summary> /// 經由過程重寫,外面上挪用Request()辦法,釀成了現實挪用SpecificRequest() /// </summary> public override void Request() { adaptee.SpecificRequest(); } }
4.3 客戶端代碼
class Program { static void Main(string[] args) { // 對客戶端來講,挪用的就是Target的Request() Target target = new Adapter(); target.Request(); Console.Read(); } }
運轉成果
5. 形式總結
5.1 長處
5.1.1 經由過程適配器,客戶端可以挪用統一接口,因此對客戶端來講是通明的。如許做更簡略、更直接、更緊湊。
5.1.2 復用了現存的類,處理了現存類和復用情況請求紛歧致的成績。
5.1.3 將目的類和適配者類解耦,經由過程引入一個適配器類重用現有的適配者類,而無需修正原有代碼。
5.1.4 一個對象適配器可以把多個分歧的適配者類適配到統一個目的,也就是說,統一個適配器可以把適配者類和它的子類都適配到目的接口。
5.2 缺陷
關於對象適配器來講,改換適配器的完成進程比擬龐雜。
5.3 實用場景
5.3.1 體系須要應用現有的類,而這些類的接口不相符體系的接口。
5.3.2 想要樹立一個可以重用的類,用於與一些彼此之間沒有太年夜聯系關系的一些類,包含一些能夠在未來引進的類一路任務。
5.3.3 兩個類所做的工作雷同或類似,然則具有分歧接口的時刻。
5.3.4 舊的體系開辟的類曾經完成了一些功效,然則客戶端卻只能以別的接口的情勢拜訪,但我們不願望手動更改原有類的時刻。
5.3.5 應用第三方組件,組件接口界說和本身界說的分歧,不願望修正本身的接口,然則要應用第三方組件接口的功效。
6. 適配器運用舉例
6.1 應用過ADO.NET的開辟人員應當都用過DataAdapter,它就是用作DataSet和數據源之間的適配器。DataAdapter經由過程映照Fill和Update來供給這一適配器。
6.2 手電機源適配器
以上就是本文的全體內容,願望能給年夜家一個參考,也願望年夜家多多支撐。