一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C# 設計模式系列教程-適配器模式

C# 設計模式系列教程-適配器模式

2021-11-23 15:04Wang Juqiang C#

通過適配器,客戶端可以調用同一接口,因而對客戶端來說是透明的。這樣做更簡單、更直接、更緊湊。

1. 概述

  將一個類的接口轉換成客戶希望的另外一個接口。adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以在一起工作。

2. 解決的問題

  即adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以在一起工作。

3. 模式中的角色

  3.1 目標接口(target):客戶所期待的接口。目標可以是具體的或抽象的類,也可以是接口。

  3.2 需要適配的類(adaptee):需要適配的類或適配者類。

  3.3 適配器(adapter):通過包裝一個需要適配的對象,把原接口轉換成目標接口。  

4. 模式解讀

  注:在gof的設計模式中,對適配器模式講了兩種類型,類適配器模式和對象適配器模式。由于類適配器模式通過多重繼承對一個接口與另一個接口進行匹配,而c#、java等語言都不支持多重繼承,因而這里只是介紹對象適配器。

  4.1 適配器模式的類圖

C# 設計模式系列教程-適配器模式

  4.2 適配器模式的代碼實現

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/// <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 客戶端代碼

?
1
2
3
4
5
6
7
8
9
10
11
class program
{
 static void main(string[] args)
 {
  // 對客戶端來說,調用的就是target的request()
  target target = new adapter();
  target.request();
 
  console.read();
 }
}

  運行結果

C# 設計模式系列教程-適配器模式

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 手機電源適配器


以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
主站蜘蛛池模板: 国产欧美日韩在线不卡第一页 | 91久久偷偷做嫩草影院电 | 欧美精品一区二区在线观看播放 | 午夜影院在线免费观看 | 乳环调教| 91麻豆精品 | 免费一级毛片在线播放 | 国产成人精品免费2021 | 日韩高清一区二区 | 91久久国产成人免费观看资源 | 亚洲剧情在线观看 | 日噜噜| 青草国产在线视频 | 美女脱一光二净的视频 | 我的男友是消防员在线观看 | 日韩免费在线看 | 香蕉视频在线观看网站 | 国产无限免费观看黄网站 | 99热国产在线 | 99久久精品国产一区二区 | 免费尤物视频 | 色综合久久中文字幕网 | 四虎影院精品在线观看 | 日韩成a人片在线观看日本 日韩不卡一区二区 | 狠狠综合视频精品播放 | 国产卡一卡二卡四卡无卡 | 日韩成人一区ftp在线播放 | 痴mu动漫成年动漫在线观看 | 美女的隐私脱裤子无遮挡 | 国产午夜小视频 | 调教催眠改造np总攻 | 香蕉久草在线 | 精品国产一区二区在线观看 | 精品国产乱码久久久久久免费流畅 | sao虎在线精品永久在线 | jj免费视频 | 亚洲第一男人网站 | 亚洲 综合 自拍 精品 在线 | 天天操天天射天天爽 | 末代皇帝无删减版在线观看 | 欧美一级片在线免费观看 |