C++中怎么實現一個接口,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
站在用戶的角度思考問題,與客戶深入溝通,找到文縣網站設計與文縣網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都網站設計、做網站、企業官網、英文網站、手機端網站、網站推廣、域名申請、網站空間、企業郵箱。業務覆蓋文縣地區。
定理1:C++接口是依賴的終點。接口不需要依賴任何東西。
推論1:依賴C++接口是安全的。不會帶來更多的依賴關系。
推論2:當我們需要依賴時,我們必須盡量做到:我們依賴的是接口。而不是實際的東西。
前面的WNS的例子中,是函數指針接口的應用。下面舉出一個純虛類的例子。
假設我們制作了一個對話框(MyDlg)。我在對話框上添加了一個控件(MyCtrl)。MyCtrl派生于一個基類MyCtrlBase,該Base類有一個虛函數:
virtual void OnClick() = 0;
該控件被點擊的時候,則OnClick會被調用。現在的意圖是,該控件被點擊的時候,我的對話框發生某種變化,比如說,MyDlg::OnMyCtrlClick()被調用。這如何實現呢? 最常見的但是也是錯誤的方法如下首先是MyDlg:
class MyDlg : public MyDlgBase { public virtual void OnMyCtrlClick() { … } private: MyCtrl * m_myCtrl; class MyCtrl : public MyCtrlBase { public: virtual void OnClick(); private: MyDlgCtrl *m_parentDlg; };
我確實實現了。但是這個實現方法真的很愚蠢。因為MyCtrl和MyDlg完全依賴了對方。任何一個都不能脫離對方而被重用。MyDlg依賴MyCtrl尚可以理解。因為這個對話框中含有這個控件。但是MyCtrl為何要依賴MyDlg呢?這是完全沒有必要的。我自己是一個控件,沒有理由理會我在哪個窗口里。
無論在哪個窗口里,都是一樣的作用。 當對話框上有多個不同控件時,情況會更加復雜。最終的結果,導致全部的組件之間都互相依賴,沒有任何一個部分是可以重用的。 正確的方法是抽象出一個接口。這個C++接口叫做“點擊接收者”。
下面再舉我們在Capsuit的開發中,碰到的一個問題。情況是這樣的:我們的軟件,要對計算機進行全面的檢查。包括檢查硬件,檢查操作系統信息,檢查注冊表,檢查進程,以及運行的服務等等,來判斷當前計算機是否正常。
本人負責開發檢查部分。這個部分的任務是,根據外部輸入的需求,來調用相應的實際進行檢查的函數。這些函數則由各個不同部門的同仁實現好。本人只要調用他們就可以了。
struct condition { string check_type; // 告訴我檢查的類型, string param1; // 檢查的參數,比如說是哪個注冊表項要檢查,等等 string param2; // 同上,都是取決于不同類型的檢查而不同的參數 };
關于C++中怎么實現一個接口問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創新互聯行業資訊頻道了解更多相關知識。