日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

[C# 设计模式] Adapter - 适配器模式(两种)

發(fā)布時(shí)間:2025/6/17 C# 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [C# 设计模式] Adapter - 适配器模式(两种) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Adapter - 適配器模式

  現(xiàn)實(shí)生活中,我們常用到適配器。

  你當(dāng)前打開(kāi)我這篇文章的筆記本電腦,電源的另一邊不正連著一塊適配器嗎?

  你平時(shí)想將三口插座插進(jìn)二口插座里面,不也需要一個(gè)適配器嗎?

  整天插在插座上的手機(jī)充電頭,不也是一個(gè)適配器嗎?

?

目錄

  • 第一種:類(lèi)適配器(使用繼承)
  • 第二種:對(duì)象適配器(使用委托)
  • 抽象的 UML 類(lèi)圖

?

第一種:類(lèi)適配器(使用繼承)

  這里,我假設(shè)家用功率為 220v,經(jīng)過(guò)適配器,輸出為 18v,可供我的筆記本進(jìn)行使用。

  類(lèi)圖

?

  Portal(入口) 類(lèi):只有一個(gè)方法 Input(),來(lái)表示輸入的電流功率。

  IOutput(輸出)接口:只有一個(gè)方法 Output(),來(lái)表示經(jīng)過(guò)轉(zhuǎn)換后輸出的電流功率。

  Adapter(適配器)類(lèi):實(shí)現(xiàn)了 IOutput 接口。

?

  Portal.cs 類(lèi)

1 /// <summary> 2 /// 入口 3 /// </summary> 4 class Portal 5 { 6 private readonly string _msg; 7 8 public Portal(string msg) 9 { 10 _msg = msg; 11 } 12 13 /// <summary> 14 /// 輸入(電流) 15 /// </summary> 16 public void Input() 17 { 18 Console.WriteLine(_msg + " --> 18v。"); 19 } 20 }

  

  IOutput.cs 接口

1 interface IOutput 2 { 3 /// <summary> 4 /// 輸出(電流) 5 /// </summary> 6 void Output(); 7 }

?

  Adapter.cs 類(lèi)

1 /// <summary> 2 /// 適配器 3 /// </summary> 4 class Adapter : Portal, IOutput 5 { 6 public Adapter(string msg) : base(msg) 7 { 8 } 9 10 public void Output() 11 { 12 Input(); 13 } 14 }

?

  Client.cs 類(lèi)

1 class Client 2 { 3 static void Main(string[] args) 4 { 5 IOutput adapter = new Adapter("220v"); 6 adapter.Output(); 7 8 Console.Read(); 9 } 10 }

?

  客戶(hù)端在使用的過(guò)程中,我們只知道輸出的結(jié)果即可,內(nèi)部實(shí)現(xiàn)不需要理會(huì)。

?

第二種:對(duì)象適配器(使用委托)

  委托:自己不想做的事,交給第三方去做。

  類(lèi)圖

?

  Portal.cs 類(lèi)

1 /// <summary> 2 /// 入口 3 /// </summary> 4 class Portal 5 { 6 private readonly string _msg; 7 8 public Portal(string msg) 9 { 10 _msg = msg; 11 } 12 13 public void Input() 14 { 15 Console.WriteLine(_msg + " --> 18v"); 16 } 17 }

?

  Adapter.cs 類(lèi)

1 class Adapter : Export 2 { 3 private readonly Portal _portal; 4 5 public Adapter(string msg) 6 { 7 _portal = new Portal(msg); 8 } 9 10 public override void Output() 11 { 12 _portal.Input(); 13 } 14 }

?

  Export.cs 類(lèi)

1 /// <summary> 2 /// 出口 3 /// </summary> 4 abstract class Export 5 { 6 public abstract void Output(); 7 }

?

抽象的 UML 類(lèi)圖

  4 種角色:Adaptee(被適配),Adapter(適配者),Client(使用場(chǎng)景),Target(目標(biāo)對(duì)象)。

  Adaptee(被適配):不是 -er 結(jié)尾的哦,之前的 Portal(入口)類(lèi)作為被適配者。

  Adapter(適配者):作為 Adaptee 和 Target 的媒介,進(jìn)行調(diào)節(jié)。

  Client(使用場(chǎng)景):一個(gè)調(diào)用的入口,以 Main() 作為入口函數(shù)。

  Target(目標(biāo)對(duì)象):調(diào)節(jié)(適配)后的輸出,之前的 IOutput 接口和 Export 類(lèi)都是作為 Target 對(duì)象。

?

圖:類(lèi)適配器(使用繼承)

圖:對(duì)象適配器(使用委托)

?

?

?C# 設(shè)計(jì)模式系列

  《Iterator - 迭代器模式:我與一份奧利奧早餐的故事》

?

?


【博主】反骨仔

【原文】http://www.cnblogs.com/liqingwen/p/6560899.html?

?

轉(zhuǎn)載于:https://www.cnblogs.com/liqingwen/p/6560899.html

總結(jié)

以上是生活随笔為你收集整理的[C# 设计模式] Adapter - 适配器模式(两种)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。