国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

服務器之家 - 編程語言 - C/C++ - 深入解析設計模式中的適配器模式在C++中的運用

深入解析設計模式中的適配器模式在C++中的運用

2021-03-26 14:50黃花寒 C/C++

這篇文章主要介紹了設計模式中的適配器模式在C++中的運用,通常適配器模式可以細分為類適配器和對象適配器兩種情況,需要的朋友可以參考下

適配器模式屬于結構型的設計模式,它是結構型設計模式之首(用的最多的結構型設計模式)。
適配器設計模式也并不復雜,適配器它是主要作用是將一個類的接口轉換成客戶希望的另外一個接口這樣使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。適配器模式有兩種:1.類的適配器 2.對象適配器,對象適配器更多一些。

示例:比如你在網上買了一個手機,但是買家給你發回來了一個3接頭的充電器,但是恰好你又沒有3接頭的插槽,只有2個接口的插槽,于是你很直然地便會想到去找你個3接口轉兩接口的轉換器。簡單的分析下這個轉換器便是我們這里的適配器Adapter。三相插頭便是我們要適配的Adaptee,兩相插類適配器-----在我看來C++的類適配器的用多重繼承實現,并提供適配后的接口。

深入解析設計模式中的適配器模式在C++中的運用

這是你的三相插頭

?
1
2
3
4
5
6
7
8
class ThreePhaseOutlet
{
public:
  void doThreePhasePlugin()
  {
    cout<<"三相插頭強勢插入!"<<endl;
  }
};

這是你想要的兩相插頭

?
1
2
3
4
5
class TwoPhaseOutlet 
{
public:
  virtual void doPlugin() = 0;
};

 
然后你將需要找到一個轉接頭,將三相插頭轉換為“兩相插頭”

?
1
2
3
4
5
6
7
8
9
10
11
12
13
class OutletConvertor: public TwoPhaseOutlet,public ThreePhaseOutlet
{
public:
  void doPlugin()
  {
    doConvertor();
    doThreePhasePlugin();
  }  
    void doConvertor()
  {
    cout<<"三相插頭轉為兩廂插頭!"<<endl;
  }
};

現在你可以強勢插入兩相的插口了。

?
1
2
TwoPhaseOutlet* outlet = new OutletConvertor();
outlet->doPlugin();

對象適配器模式-----對象適配器是將需要適配的對象進行包裝然后提供適配后的接口。

深入解析設計模式中的適配器模式在C++中的運用

對象適配器的 三相插口和轉接頭的代碼和上面一致。只是整合步驟不一致

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class OutletConvertor : public TwoPhaseOutlet
{
public:
  void doPlugin()
  {
    doConvertor();
    m_out.doThreePhasePlugin();
  }
  void doConvertor()
  {
    cout<<"三相插頭轉為兩廂插頭!"<<endl;
  }
  ThreePhaseOutlet m_out;
};

對象適配器相比類適配器來說更加靈活,他可以選擇性適配自己想適配的對象。例如我們下面把代碼改成這樣,你也許就會明白為什么我這樣說:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class OutletConvertor : public TwoPhaseOutlet
{
public:
  OutletConvertor(ThreePhaseOutlet out)
  {
    m_out = out;
  }
  void doPlugin()
  {
    doConvertor();
    m_out.doThreePhasePlugin();
  }
  void doConvertor()
  {
    cout<<"三相插頭轉為兩廂插頭!"<<endl;
  }
  ThreePhaseOutlet m_out;
};

我們在構造的時候將具體需要適配的適配對象傳入,這樣便可以根據傳入不同的對象,從而對該對象進行適配。而類適配器卻無法選擇對象,他是對整個類進行適配。也就是把所有的三相插口全部轉換為兩相的,而不是針對某一個。


在以下各種情況下使用適配器模式:

1、 系統需要使用現有的類,而此類的接口不符合系統的需要。
2、 想要建立一個可以重復使用的類,用于與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。這些源類不一定有很復雜的接口。
3、 (對對象適配器而言)在設計里,需要改變多個已有子類的接口,如果使用類的適配器模式,就要針對每一個子類做一個適配器,而這不太實際。

Adapter模式在實現時有以下這些值得注意的地方:

1、 目標接口可以省略,模式發生退化。但這種做法看似平庸而并不平庸,它可以使Adaptee不必實現不需要的方法(可以參考Default Adapter模式)。其表現形式就是父類實現缺省方法,而子類只需實現自己獨特的方法。這有些像模板(Template)模式。
2、 適配器類可以是抽象類。
3、 帶參數的適配器模式。使用這種辦法,適配器類可以根據參數返還一個合適的實例給客戶端。

延伸 · 閱讀

精彩推薦
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
主站蜘蛛池模板: 午夜伦4480yy私人影院 | av久草| 欧美区在线 | 无码日韩精品一区二区免费 | 午夜视频| 天堂久久精品 | 欧美一级片在线 | 免费毛片黄色视频 | 免费不卡视频 | 99re热精品视频 | 亚洲一区二区福利 | 欧美日韩高清在线一区 | 人人人人澡人人爽人人澡 | 亚洲专区中文字幕 | 1a级毛片免费观看 | 国产欧美一区二区精品性色 | 国产一区二区三区欧美 | 午夜电影网站 | 我要看黄色一级大片 | 久久福利电影 | 91久久久久久久久久久久久久久久 | 99亚洲国产精品 | 色网站在线观看 | 午夜精品一区二区三区在线观看 | 久久婷婷色| 精品国产一区二区三区忘忧草 | 亚洲免费观看视频网站 | 欧美综合在线观看 | 999在线观看精品免费不卡网站 | 国产高清自拍视频 | 国产成人av在线 | 99伊人网| www.天天操.com | 欧美一区二区三区在线看 | 精品视频网 | 免费黄色大片网址 | 黄色免费在线观看 | 毛片大全| 婷婷精品久久久久久久久久不卡 | 性高湖久久久久久久久aaaaa | 亚洲欧洲视频 |