成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析C++接口實現方法

開發 后端
所謂接口:我試圖要使用一個功能,但是我不確定這個功能是如何實現的時,我所調用的一個函數指針,或者一個虛函數,或者一個純虛類。

C++接口總是空的,或者虛的,C++接口和C++抽象類代表的就是抽象類型,就是我們需要提出的抽象層的具體表現,它不實現任何東西,所以可以有以下的結論:

定理1:C++接口是依賴的終點。接口不需要依賴任何東西。

推論1:依賴C++接口是安全的。不會帶來更多的依賴關系。

推論2:當我們需要依賴時,我們必須盡量做到:我們依賴的是接口。而不是實際的東西。

前面的WNS的例子中,是函數指針接口的應用。下面舉出一個純虛類的例子。

假設我們制作了一個對話框(MyDlg)。我在對話框上添加了一個控件(MyCtrl)。MyCtrl派生于一個基類MyCtrlBase,該Base類有一個虛函數:

  1. virtual void OnClick() = 0; 

該控件被點擊的時候,則OnClick會被調用。現在的意圖是,該控件被點擊的時候,我的對話框發生某種變化,比如說,MyDlg::OnMyCtrlClick()被調用。這如何實現呢? 最常見的但是也是錯誤的方法如下首先是MyDlg:

  1. class MyDlg : public MyDlgBase   
  2. {   
  3. public virtual void OnMyCtrlClick()   
  4. { … }   
  5. private: MyCtrl * m_myCtrl;   
  6.  class MyCtrl : public MyCtrlBase   
  7. { public: virtual void OnClick();   
  8. private:   
  9. MyDlgCtrl *m_parentDlg; };  

我確實實現了。但是這個實現方法真的很愚蠢。因為MyCtrl和MyDlg完全依賴了對方。任何一個都不能脫離對方而被重用。MyDlg依賴MyCtrl尚可以理解。因為這個對話框中含有這個控件。但是MyCtrl為何要依賴MyDlg呢?這是完全沒有必要的。我自己是一個控件,沒有理由理會我在哪個窗口里。

無論在哪個窗口里,都是一樣的作用。 當對話框上有多個不同控件時,情況會更加復雜。最終的結果,導致全部的組件之間都互相依賴,沒有任何一個部分是可以重用的。 正確的方法是抽象出一個接口。這個C++接口叫做“點擊接收者”。#t#

下面再舉我們在Capsuit的開發中,碰到的一個問題。情況是這樣的:我們的軟件,要對計算機進行全面的檢查。包括檢查硬件,檢查操作系統信息,檢查注冊表,檢查進程,以及運行的服務等等,來判斷當前計算機是否正常。

本人負責開發檢查部分。這個部分的任務是,根據外部輸入的需求,來調用相應的實際進行檢查的函數。這些函數則由各個不同部門的同仁實現好。本人只要調用他們就可以了。

  1. struct condition { string check_type; // 告訴我檢查的類型, string param1; 
  2. // 檢查的參數,比如說是哪個注冊表項要檢查,等等 string param2; 
  3. // 同上,都是取決于不同類型的檢查而不同的參數 };  
責任編輯:chenqingxiang 來源: 新浪科技
相關推薦

2010-01-14 17:13:53

C++接口

2010-01-18 14:41:52

Visual C++開

2014-01-02 10:46:35

PostgreSQLC++

2010-01-22 13:59:34

Visual C++應

2009-08-31 16:48:02

C#實現IDispos

2009-09-01 18:29:24

C#實現多個接口

2010-01-26 17:35:09

C++棧

2009-07-06 17:36:06

ResultSetJDBC Connec

2020-09-03 08:09:15

C++接口語言

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2009-08-27 14:29:28

顯式實現接口

2009-08-27 18:09:49

C#接口的實現

2009-09-07 09:36:29

C# DisposeDispose方法

2010-01-20 10:19:55

C++數組

2010-01-27 17:16:52

C++構造函數

2010-01-26 14:35:11

C++關鍵字

2021-10-19 14:04:28

C++類型數字

2010-02-03 10:50:33

C++多態

2010-02-03 16:35:45

C++回文
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美中文在线 | 欧美 日韩 在线播放 | 国产一区二区av | 国产精品久久久久久高潮 | 亚洲不卡在线观看 | 亚洲一区二区三区在线播放 | 亚洲精品视频在线 | 亚洲精品aⅴ | 亚洲精品在线播放 | 午夜网| 老外黄色一级片 | 99国产精品99久久久久久 | 久久久91精品国产一区二区精品 | 成人在线一区二区 | 91精品国产日韩91久久久久久 | 国产精品美女久久久久aⅴ国产馆 | 国产精品久久久久一区二区三区 | 国产精品一区二区三区免费观看 | 精品国产乱码久久久久久闺蜜 | 东方伊人免费在线观看 | 正在播放一区二区 | 黄色在线观看网站 | 国产精品久久久久aaaa九色 | 国产精品无码永久免费888 | 国产激情视频在线观看 | 国产成人免费视频网站视频社区 | 国产日韩欧美一区 | 免费国产视频 | 欧美性大战xxxxx久久久 | 盗摄精品av一区二区三区 | 欧美一区二区三区一在线观看 | av网址在线 | 羞羞视频网站免费看 | 香蕉婷婷 | 精品1区2区3区| 永久www成人看片 | 丝袜 亚洲 欧美 日韩 综合 | 中文字幕在线观看 | 亚洲国产精品人人爽夜夜爽 | 久久久久久亚洲精品不卡 | 久久男人|