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

淺析C++接口實(shí)現(xiàn)方法

開(kāi)發(fā) 后端
所謂接口:我試圖要使用一個(gè)功能,但是我不確定這個(gè)功能是如何實(shí)現(xiàn)的時(shí),我所調(diào)用的一個(gè)函數(shù)指針,或者一個(gè)虛函數(shù),或者一個(gè)純虛類(lèi)。

C++接口總是空的,或者虛的,C++接口和C++抽象類(lèi)代表的就是抽象類(lèi)型,就是我們需要提出的抽象層的具體表現(xiàn),它不實(shí)現(xiàn)任何東西,所以可以有以下的結(jié)論:

定理1:C++接口是依賴(lài)的終點(diǎn)。接口不需要依賴(lài)任何東西。

推論1:依賴(lài)C++接口是安全的。不會(huì)帶來(lái)更多的依賴(lài)關(guān)系。

推論2:當(dāng)我們需要依賴(lài)時(shí),我們必須盡量做到:我們依賴(lài)的是接口。而不是實(shí)際的東西。

前面的WNS的例子中,是函數(shù)指針接口的應(yīng)用。下面舉出一個(gè)純虛類(lèi)的例子。

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

  1. virtual void OnClick() = 0; 

該控件被點(diǎn)擊的時(shí)候,則OnClick會(huì)被調(diào)用。現(xiàn)在的意圖是,該控件被點(diǎn)擊的時(shí)候,我的對(duì)話框發(fā)生某種變化,比如說(shuō),MyDlg::OnMyCtrlClick()被調(diào)用。這如何實(shí)現(xiàn)呢? 最常見(jiàn)的但是也是錯(cuò)誤的方法如下首先是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; };  

我確實(shí)實(shí)現(xiàn)了。但是這個(gè)實(shí)現(xiàn)方法真的很愚蠢。因?yàn)镸yCtrl和MyDlg完全依賴(lài)了對(duì)方。任何一個(gè)都不能脫離對(duì)方而被重用。MyDlg依賴(lài)MyCtrl尚可以理解。因?yàn)檫@個(gè)對(duì)話框中含有這個(gè)控件。但是MyCtrl為何要依賴(lài)MyDlg呢?這是完全沒(méi)有必要的。我自己是一個(gè)控件,沒(méi)有理由理會(huì)我在哪個(gè)窗口里。

無(wú)論在哪個(gè)窗口里,都是一樣的作用。 當(dāng)對(duì)話框上有多個(gè)不同控件時(shí),情況會(huì)更加復(fù)雜。最終的結(jié)果,導(dǎo)致全部的組件之間都互相依賴(lài),沒(méi)有任何一個(gè)部分是可以重用的。 正確的方法是抽象出一個(gè)接口。這個(gè)C++接口叫做“點(diǎn)擊接收者”。#t#

下面再舉我們?cè)贑apsuit的開(kāi)發(fā)中,碰到的一個(gè)問(wèn)題。情況是這樣的:我們的軟件,要對(duì)計(jì)算機(jī)進(jìn)行全面的檢查。包括檢查硬件,檢查操作系統(tǒng)信息,檢查注冊(cè)表,檢查進(jìn)程,以及運(yùn)行的服務(wù)等等,來(lái)判斷當(dāng)前計(jì)算機(jī)是否正常。

本人負(fù)責(zé)開(kāi)發(fā)檢查部分。這個(gè)部分的任務(wù)是,根據(jù)外部輸入的需求,來(lái)調(diào)用相應(yīng)的實(shí)際進(jìn)行檢查的函數(shù)。這些函數(shù)則由各個(gè)不同部門(mén)的同仁實(shí)現(xiàn)好。本人只要調(diào)用他們就可以了。

  1. struct condition { string check_type; // 告訴我檢查的類(lèi)型, string param1; 
  2. // 檢查的參數(shù),比如說(shuō)是哪個(gè)注冊(cè)表項(xiàng)要檢查,等等 string param2; 
  3. // 同上,都是取決于不同類(lèi)型的檢查而不同的參數(shù) };  
責(zé)任編輯:chenqingxiang 來(lái)源: 新浪科技
相關(guān)推薦

2010-01-14 17:13:53

C++接口

2010-01-18 14:41:52

Visual C++開(kāi)

2014-01-02 10:46:35

PostgreSQLC++

2010-01-22 13:59:34

Visual C++應(yīng)

2009-09-01 18:29:24

C#實(shí)現(xiàn)多個(gè)接口

2009-08-31 16:48:02

C#實(shí)現(xiàn)IDispos

2010-01-26 17:35:09

C++棧

2009-07-06 17:36:06

ResultSetJDBC Connec

2020-09-03 08:09:15

C++接口語(yǔ)言

2010-01-21 09:34:57

C++語(yǔ)法

2010-01-27 16:05:06

C++堆棧

2009-09-07 09:36:29

C# DisposeDispose方法

2009-08-27 14:29:28

顯式實(shí)現(xiàn)接口

2009-08-27 18:09:49

C#接口的實(shí)現(xiàn)

2010-01-20 10:19:55

C++數(shù)組

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2010-02-03 10:50:33

C++多態(tài)

2010-02-03 16:35:45

C++回文

2010-01-26 14:35:11

C++關(guān)鍵字

2021-10-19 14:04:28

C++類(lèi)型數(shù)字
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久青草av | 欧美一区二区大片 | 欧美一区二区三区在线观看 | 人人亚洲 | 久久久久久国产精品免费免费男同 | 国产三级精品三级在线观看四季网 | 成人在线免费观看 | 久久久噜噜噜久久中文字幕色伊伊 | 性一交一乱一伦视频免费观看 | 日本三级在线 | 人人九九精 | 精品三区 | 狠狠ri| 男女久久久 | 日本成人免费观看 | 在线国产一区 | 国产色网| 日韩欧美一二三区 | 精品熟人一区二区三区四区 | 国产免费高清 | 欧美videosex性极品hd | 欧美日韩视频 | 国产精品国产三级国产播12软件 | 免费看的av | 91视频三区 | 男人视频网站 | 日韩和的一区二在线 | 蜜桃视频在线观看免费视频网站www | 91婷婷韩国欧美一区二区 | 亚洲毛片网站 | 日韩一级免费电影 | 午夜精品一区二区三区免费视频 | 国产日韩亚洲欧美 | 免费看啪啪网站 | 成年人网站国产 | 久久综合婷婷 | 欧美亚洲视频 | 91久久夜色精品国产网站 | 99视频在线看 | 国产成人在线视频免费观看 | 日韩一区二区三区视频 |