基於介面訪問與基於介面實現類訪問

2021-05-12 20:49:13 字數 755 閱讀 5063

在基於物件模型特別是com物件的應用開發中,我們一般是定義了相當多的介面,及圍繞介面相當多的實現類。這裡涉及到對相關介面的訪問,訪問是基於介面指標訪問還是基於介面實現類的訪問,這兩者是有不同的。

基於介面訪問,那麼只能呼叫介面的方法,對於實現部分其它的方法的呼叫是無能為力的。

基於實現類的訪問,可以呼叫其所有的方法,與普通實現類的呼叫是沒有什麼不同。唯一不同的是我們必須要包含實現定義檔案,如有需要還需其lib檔案。不足的地方就是說對實現類的依賴比較大,就算是以動態庫的方式來實現,標頭檔案的變更,也會引起程式的變更。

這個也是我在工作中碰到的乙個疑問整理出來。具體的應用環境是基於directshow的filter開發。

如果熟悉這方面的人知道,directshow有乙個graphbuild負責來管理filter,filter來管理pin腳的

我們知道filter實現的介面 ibasefilter並沒有實現run(), stop(), pause()的方法,那麼,如何調到filter的這個方法,我個人認為,grah是基於實現類的呼叫方法,建立filter的com物件,都實現了ibasefilter介面,微軟是假設都是由cbasefilter實現的,那麼基於這個類的方法訪問,就能訪問到這個方法。如果是從面向介面,軟體工程的角度,還不如在ibasefilter中加入這兩個介面呢。何必將graph和baseclass(lib)依賴那麼緊呢。

當然上述的思想也體現在cbasefilter與cbasepin(ipin)的呼叫中,將ipin或是imeminput轉化也cbasepin來訪問實現類其它的方法。

Android基於介面實現Fragment通訊架構

思想 物件導向 優點 很大程度的解耦 缺點 量很大,不過我會針對缺點進行優化,優化之後的就是現在的架構 實現 谷歌官方規定兩個fregment之間是不可以直接通訊的,所以我們需要經過一層宿主activity,所以點進來的同學絕對是標題吸引到你啦。具體做法是在每個fragment中都定義乙個介面,然後...

7 基於Express實現介面

安裝mongoose 建立model server models goods.js var mongoose require mongoose 優先到node modeles裡載入 var schema mongoose.schema 定義模型 var productschema new schem...

SDI介面基於FPGA GTP實現

sdi採集和顯示,基於xilinx 7系列器件進行實現,注意事項有如下幾點 1,如果多路sdi共用乙個gtp quad,或是sdi和pcie在乙個gtp quad,時鐘資源應該進行共享,既gtp common資源需要共用,應該乙個quad只有乙個common資源,不共用會編譯出錯的。2,sdi顯示的...