前天發了構建外掛程式式的應用程式框架(五
)----管理外掛程式
這篇文章,有幾個朋友在回覆中希望了解外掛程式之間是如何通訊的。
service container
),service
是我所提到的外掛程式式的應用程式框架的基礎,我們也可以回頭看看
的介面定義
是派生於
iservicecontainer
。我把應用程式提供的相關的功能抽象成乙個乙個的
service
,比如文件管理的,我們就抽象成
idocumentservice
,停靠工具欄管理功能抽象成
idockbarservice
,選單管理的功能抽象成
imenuservice
,等等。我在第四篇文章裡也提到了「我們在使用
service
架構的時候,總是傾向於有乙個根容器,各個
service
容器構成了乙個
service
容器樹,每乙個節點的服務都可以一直向上傳遞,直到根部,而每乙個節點請求
service
的時候,我們總是可以從根節點獲得。我把這個根節點比喻成乙個服務中心,它彙總了所有可提供的服務,當某個物件要請求服務(
getservice
)只需要向根結點傳送要獲得的服務,根結點就可以把服務的物件傳遞給它。」
是從iservicecontainer
介面派生出來的,而我們的應用程式主視窗又是從
介面派生出來的,所以,我們的應用程式主視窗就是乙個
servicecontainer
。從iplugin
的定義來看,它有乙個
介面屬性,這個
屬性是什麼時候指定的呢,在第五篇文章的源**裡我們看到,當每乙個
plugin
被例項化的時候,由
pluginservice
指定的,所以在每乙個
plugin
被load
之前,已經被指定,而代表這個
介面的例項正是我們的應用程式主視窗,而它正是我們所需要的服務容器。一旦我們能夠獲得
例項,我們就可以獲得整個應用程式所提供的所有的服務。假設我們要獲得文件服務,就可以使用
plugin
的private
void
checkexistedplugin()}}
}當然,要在外掛程式中獲得例項,你必須在應用程式裡或者其他外掛程式裡例項化服務物件,然後新增到服務容器裡,還拿上邊的例子,我們在應用程式裡例項化了
pluginservice
,然後新增到了容器裡,**如下:
public
mainform()
原文出自:
構建外掛程式式的應用程式框架 五 管理外掛程式
我們現在已經搭建了外掛程式式的應用程式框架,接下來的工作就是要充實框架的內容,提供基本的服務,也就是service。我想首要的任務就是提供外掛程式的管理服務,我在前面的文章也提到了,要實現動態載入必須要知道外掛程式寄宿在 哪些要載入,哪些不載入,這些就是這篇文章要討論的問題。首先解決的就是外掛程式放...
構建外掛程式式的應用程式框架 五 管理外掛程式
我們現在已經搭建了外掛程式式的應用程式框架,接下來的工作就是要充實框架的內容,提供基本的服務,也就是service。我想首要的任務就是提供外掛程式的管理服務,我在前面的文章也提到了,要實現動態載入必須要知道外掛程式寄宿在 哪些要載入,哪些不載入,這些就是這篇文章要討論的問題。首先解決的就是外掛程式放...
構建外掛程式式的應用程式框架 七 基本服務
既然做好了框架,我們就希望為某個目標服務,我們要提供一些基本的服務,方便使用者繼續擴充套件他的功能。首先想到的功能就是,選單,工具欄的管理,接下來我們要實現一些更流行的功能,比如停靠工具欄等等。如何實現這些服務呢?我們希望我們的外掛程式在執行時可以獲得應用程式本身的選單,工具條,停靠工具欄等等,然後...