0、概念
介面就是純虛函式類,也就是最終的服務的前身;
外掛程式就是實現這個介面類的實現類,所以理論上有多少個實現類就有多少個外掛程式。注意每個外掛程式都有自己的註冊器activator;
服務就是根據介面的例項,每生成乙個服務就會呼叫一次註冊器的start。
一句話總結就是:把介面當做類,服務是根據類new出的物件,外掛程式就是動態庫dll。
1、1對1
1個介面類由1個類實現,輸出1個服務和1個外掛程式。
2、多對1
1個類實現了2個介面類,輸出2個服務和1個外掛程式,無論想使用哪個服務最終都通過這同乙個外掛程式來實現
3、1對多
1介面由2個類實現,也就是某乙個問題提供了2種解決思路,輸出1個服務和2個外掛程式,通過ctkpluginconstants::service_ranking和ctkpluginconstants::service_id來呼叫不同的外掛程式。這裡雖然有兩個外掛程式,但都是被編譯到同乙個dll中的。
ps:①、某外掛程式每次呼叫另乙個外掛程式的時候,只會生成乙個例項,然後把例項存到記憶體當中,不會因為多次呼叫而生成多個服務例項。
ctk框架搭建 二 ctk外掛程式的介面處理及啟用
ctk框架由乙個乙個可分離的外掛程式組成,框架對外掛程式識別有一定要求,目前網上很多一整塊扔出來對新人不太友好,博主這裡講解是盡量拆。單個外掛程式最基本的格式要求分成activator,qrc檔案,以及manifest.mf,我們以生成乙個主介面模組mainwindow為例。右鍵專案選擇新建子專案 ...
CTK外掛程式框架學習6 註冊介面呼叫
ctkservicereference csref pcontex getservicereference ctkeventadmin eventadmin pcontex getservice csref ctkdictionary cdiry cdiry.insert plug info qst...
CTK外掛程式 外掛程式之間的依賴
如何實現依賴 在manifest.mf裡,加入元物件 require plugin firstplugin plugin version 0.5,2.0 resolution mandatory firstplugin 為需要依賴的外掛程式名 就是另乙個外掛程式在manifest.mf裡的plugi...