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

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

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):通過包裝一個需要適配的對象,把原接口轉換成目標接口?! ?/p>

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
主站蜘蛛池模板: 色99视频 | 亚州性夜夜射在线观看 | 色综合色狠狠天天综合色hd | 国产成人精品午夜免费 | 娇小老少配xxxxx性视频 | 青青青草国产线观 | 亚洲精品国产自在现线最新 | 日本视频中文字幕 | 国产高清不卡码一区二区三区 | 国产精品资源在线观看网站 | 帅老头恋帅老头同性tv | 99久久精品免费看国产四区 | 996热在线视频 | 欧美日韩亚毛片免费观看 | 女性性色生活片免费观看 | 国色天香视频资源网 | 免费国产好深啊好涨好硬视频 | 91高清免费国产自产 | 朝鲜美女免费一级毛片 | 国产探花在线观看 | 王淑兰与铁柱全文免费阅读 | 日本xxx在线观看免费播放 | 日本嫩小xxxxhd | 亚洲高清一区二区三区久久 | 国产精品www | 国产裸舞福利资源在线视频 | 99久久中文字幕伊人 | 99在线观看视频免费精品9 | 精品一区二区三区在线视频观看 | porno movie hd高清 | 亚洲码和乱人伦中文一区 | 亚洲精品色婷婷在线影院麻豆 | 999任你躁在线精品免费不卡 | 美女吃jj | 91麻豆精东果冻天美传媒老狼 | 青草国产福利视频免费观看 | 99久久精品6在线播放 | 欧美色fx性乌克兰 | 免费一级毛片完整版在线看 | 2020中文字幕 | 视频在线免费看 |