專利名稱:一種加載界面元素的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件架構(gòu)實(shí)現(xiàn)技術(shù),尤指一種加載界面元素的系統(tǒng)及方法。
技術(shù)背景在軟件架構(gòu)設(shè)計中,插件是具有統(tǒng)一接口的一組組件,插件可以動態(tài)的 被主系統(tǒng)加載并實(shí)現(xiàn)獨(dú)立的功能。由于插件的高擴(kuò)展性,使其在現(xiàn)在軟件架 構(gòu)設(shè)計中應(yīng)用越來越廣泛,相應(yīng)的越來越多的界面元素也被設(shè)計在插件中實(shí) 現(xiàn),其中最常用的界面元素就是工具條。以加載工具條為例,目前的實(shí)現(xiàn)方法主要有兩種,第一種是在插件中生 成工具條即創(chuàng)建工具條窗體句柄,然后通過該句柄添加工具條按鈕,再傳遞給主系統(tǒng)顯示;另一種是在主系統(tǒng)中創(chuàng)建工具條窗體句柄,然后將創(chuàng)建好的 句柄發(fā)送給插件,由插件通過該句柄添加工具條按鈕。由于工具條的實(shí)現(xiàn)方式很多,比如API級別的Handle,或者M(jìn)FC級別的工具條實(shí)現(xiàn)類的指針CTooffiar*,或者BCG類似的界面類庫中的某種特 效工具條等等。為了保證主系統(tǒng)能夠識別插件創(chuàng)建出的工具條,主系統(tǒng)與插件之間約定一種實(shí)現(xiàn)方式,但是這樣卻限制了工具條實(shí)現(xiàn)效果的擴(kuò)展,而擴(kuò) 展是插件系統(tǒng)最重要的 一 個指標(biāo)。從現(xiàn)有實(shí)現(xiàn)方法可見,主系統(tǒng)和插件必須了解對方的實(shí)現(xiàn)細(xì)節(jié),當(dāng)一方 變化都會引起另一方無法正確運(yùn)行,最終,結(jié)構(gòu)的高耦合性使得插件的擴(kuò)展 性無法充分實(shí)現(xiàn)。此外,由于主系統(tǒng)與插件之間有了特殊約定,就意味著模 塊耦合性增大,創(chuàng)建的工具條很可能成為一種封裝不完善的設(shè)計。發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種加載界面元素的系統(tǒng),能夠
提高插件的可擴(kuò)展性。本發(fā)明的另一目的在于提供一種加栽界面元素的方法,能夠提高插件的 可擴(kuò)展性。為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的 一種創(chuàng)建界面元素的系統(tǒng),該系統(tǒng)包括主系統(tǒng)和插件,其中,主系統(tǒng)用于實(shí)現(xiàn)界面元素的實(shí)際創(chuàng)建,并提供界面元素的顯示樣式;插件用于實(shí)現(xiàn)界面元素具體的功能實(shí)現(xiàn);主系統(tǒng)需要界面元素時,從插件獲取界面元素信息,并根據(jù)獲得的界面元素信息,通知插件創(chuàng)建界面元素;插件在創(chuàng)建過程中調(diào)用主系統(tǒng)完成實(shí)際的界面元素創(chuàng)建。所述主系統(tǒng)包括界面窗體模塊和控件創(chuàng)建模塊,其中, 界面窗體模塊,用于向所述插件發(fā)送查詢請求;接收來自所述插件的查詢響應(yīng),根據(jù)獲得的查詢結(jié)果獲取需要創(chuàng)建的界面元素;向所述插件發(fā)送創(chuàng)建請求;控件創(chuàng)建模塊,用于接收來自插件的創(chuàng)建通知,完成界面元素的實(shí)際創(chuàng)建, 并為每一個創(chuàng)建的界面元素項分配用于標(biāo)識不同界面元素的命令標(biāo)識ID。所述控件創(chuàng)建模塊為 一組COM組件接口 。所述插件包括控件查詢模塊和界面元素創(chuàng)建模塊,其中,控件查詢模塊,接收來自所述主系統(tǒng)的查詢請求,獲取插件包含的界面元 素的信息,并將該信息攜帶在查詢響應(yīng)中通知給所述主系統(tǒng);界面元素創(chuàng)建模塊,接收來自所述主系統(tǒng)的創(chuàng)建請求,通知所述主系統(tǒng)的 控件創(chuàng)建模塊創(chuàng)建界面元素。所述界面窗體模塊還用于,向所述插件中的界面元素功能處理模塊廣播需 要顯示的界面窗體對應(yīng)的命令I(lǐng)D;顯示所述插件返回的界面元素;所述插件還包括界面元素功能處理模塊,根據(jù)接收到的命令I(lǐng)D,完成 該命令I(lǐng)D對應(yīng)的界面元素的功能和狀態(tài)變化,并返回界面窗體模塊。所述插件為一個或一個以上;所述界面元素為工具條。
所速控伴Aj趁模塊力 一個成 一個以上。一種創(chuàng)建界面元素的方法,該方法包括以下步驟A. 主系統(tǒng)需要界面元素時,從插件獲取界面元素信息,并根據(jù)獲得的 界面元素信息,通知插件創(chuàng)建界面元素;B. 插件調(diào)用主系統(tǒng)的控件創(chuàng)建模塊創(chuàng)建界面元素。 該方法還包括所述主系統(tǒng)的控件創(chuàng)建模塊為每一個創(chuàng)建的界面元素項分配用于標(biāo)識不同界面元素的《,令標(biāo)識ID。該方法還包括所述主系統(tǒng)通過廣播的方式向插件發(fā)送需要顯示的界面窗 體對應(yīng)的ID,所述插件按照接收到的命令I(lǐng)D調(diào)用界面元素處理模塊完成該 命令I(lǐng)D對應(yīng)的界面元素的功能和狀態(tài)變化,并返回給主系統(tǒng)顯示。所述界面元素為工具條;所述界面元素信息為有/無界面元素,或界面 元素的個數(shù)。由上述技術(shù)方案可見,本發(fā)明主系統(tǒng)需要界面元素時,從插件獲取界面 元素信息,主系統(tǒng)根據(jù)獲得的界面元素信息,通知插件創(chuàng)建界面元素,插件 調(diào)用主系統(tǒng)創(chuàng)建界面元素并在主系統(tǒng)顯示。本發(fā)明將主系統(tǒng)的實(shí)現(xiàn)和插件的 實(shí)現(xiàn)完全分離,將界面元素的界面邏輯和功能邏輯分開,使得主系統(tǒng)提供界 面元素的界面風(fēng)格,插件提供界面元素內(nèi)容及功能邏輯,實(shí)現(xiàn)了插件適應(yīng)不 同的主系統(tǒng),擴(kuò)展提高了插件的可擴(kuò)展性。
圖l是本發(fā)明系統(tǒng)組成示意圖; 圖2是本發(fā)明方法的流程圖。
具體實(shí)施方式
本發(fā)明的核心思想是主系統(tǒng)需要界面元素時,從插件獲取界面元素信 息,并根據(jù)獲得的界面元素信息,通知插件創(chuàng)建界面元素,插件在創(chuàng)建過程 中調(diào)用主系統(tǒng)的控件創(chuàng)建模塊創(chuàng)建界面元素。
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉 較佳實(shí)施例,對本發(fā)明進(jìn)一步詳細(xì)說明。圖1是本發(fā)明創(chuàng)建界面元素的系統(tǒng)組成示意圖,如圖l所示,該系統(tǒng)包 括主系統(tǒng)和插件兩部分,其中主系統(tǒng)用于實(shí)現(xiàn)界面元素的實(shí)際創(chuàng)建并提供界 面元素的顯示樣式,插件用于實(shí)現(xiàn)界面元素具體的功能實(shí)現(xiàn)。從上述主系統(tǒng)與插件的功能描述可見,主系統(tǒng)提供了界面邏輯,即界面 元素的實(shí)現(xiàn)樣式或風(fēng)格,這樣,主系統(tǒng)只要提供不同的界面風(fēng)格實(shí)現(xiàn),就可以在不更改插件提供的界面元素代碼的情況下,靈活變換界面風(fēng)格;而插件提供了功能邏輯,即界面元素具體的功能實(shí)現(xiàn)。插件通過提供界 面元素信息,讓用戶可以通過點(diǎn)擊界面元素實(shí)現(xiàn)相應(yīng)的功能。由于界面元素 的界面的實(shí)際創(chuàng)建是由主系統(tǒng)封裝實(shí)現(xiàn)的,所以插件本身并不關(guān)心界面到底 會顯示成什么樣子,只需提供界面元素內(nèi)容及功能實(shí)現(xiàn)即可。主系統(tǒng)中包括界面窗體模塊和控建創(chuàng)建模塊。其中,界面窗體模塊,用于向插件中的控件查詢模塊發(fā)送查詢請求;接 收來自插件中控件查詢模塊的查詢響應(yīng),根據(jù)獲得的查詢結(jié)果獲取需要創(chuàng)建 的界面元素,并向插件的界面元素創(chuàng)建模塊發(fā)送創(chuàng)建請求;界面窗體模塊是需要加載界面元素的容器,例如應(yīng)用程序的主界面等等??丶?chuàng)建模塊,用于接收來自插件的界面元素創(chuàng)建模塊的創(chuàng)建通知,完 成界面元素的實(shí)際創(chuàng)建,并為每一個創(chuàng)建的界面元素項分配用于標(biāo)識不同界 面元素的命令標(biāo)識(ID)。控件創(chuàng)建模塊是一組COM組件接口,具體實(shí)現(xiàn) 屬于本領(lǐng)域技術(shù)人員公知技術(shù),這里不再詳述。COM是Component Object Model的縮寫,是一種組件技術(shù)。所述控件創(chuàng)建模塊為一個或一個以上。至少一個插件包括控件查詢模塊和界面元素創(chuàng)建模塊。其中,控件查詢模塊,接收來自主系統(tǒng)的查詢請求,獲取插件包含的界 面元素信息,并將獲得的信息攜帶在查詢響應(yīng)中返回主系統(tǒng);界面元素創(chuàng)建模塊,接收來自主系統(tǒng)的界面窗體模塊的創(chuàng)建請求,調(diào)用 主系統(tǒng)的控件創(chuàng)建模塊完成界面元素的創(chuàng)建。
所述界面窗體模塊還用于,向所述插件中的界面元素功能處理模塊廣播需要顯示的界面窗體對應(yīng)的命令I(lǐng)D;顯示所述插件返回的界面元素;所述插件還包括界面元素功能處理模塊,根據(jù)接收到的命令I(lǐng)D,完成 該命令I(lǐng)D對應(yīng)的界面元素的功能和狀態(tài)變化,并返回界面窗體模塊。本發(fā)明系統(tǒng)中,創(chuàng)建由插件中的界面元素創(chuàng)建模塊來調(diào)用,比如創(chuàng)建一 工具條,添加一按鈕等等抽象的創(chuàng)建過程,即與界面無關(guān),只表達(dá)創(chuàng)建語義, 之后界面元素創(chuàng)建模塊調(diào)用主系統(tǒng)中的控件創(chuàng)建模塊,而實(shí)現(xiàn)界面元素的創(chuàng) 建,比如創(chuàng)建基于API的工具條窗體句柄并設(shè)置為3D樣式,或者添加一 BCG樣式按鈕等等具體的創(chuàng)建過程。這點(diǎn)也正體現(xiàn)了本發(fā)明將主系統(tǒng)的實(shí) 現(xiàn)和插件的實(shí)現(xiàn)完全分離,將界面元素的界面邏輯和功能邏輯分開,使得主 系統(tǒng)提供界面元素的界面風(fēng)格,插件提供界面元素功能邏輯,實(shí)現(xiàn)了插件適 應(yīng)不同的主系統(tǒng),擴(kuò)展提高了插件的可擴(kuò)展性的優(yōu)點(diǎn)。圖2是本發(fā)明實(shí)現(xiàn)加載界面元素的方法的流程圖,如圖2所示,包括以 下步驟步驟200:主系統(tǒng)需要界面元素時,從插件獲取界面元素信息。 本步驟中,主系統(tǒng)在接收到請求顯示界面元素的顯示請求時,向插件發(fā)送查詢請求,要求插件查詢自身能提供的界面元素信息,并將查詢結(jié)果返回纟合主系統(tǒng)。查詢結(jié)果可按照預(yù)先設(shè)定的要求給出,比如最簡單的就是有/無界面元 素,界面元素的個數(shù)等。步驟201:主系統(tǒng)根據(jù)獲得的界面元素信息,通知(調(diào)用)插件創(chuàng)建界 面元素。本步驟中,創(chuàng)建由插件來調(diào)用,比如創(chuàng)建一工具條,添加一按鈕等等抽象的創(chuàng)建過程,即與界面無關(guān),只表達(dá)創(chuàng)建語義。步驟202:插件調(diào)用主系統(tǒng)的控件創(chuàng)建模塊創(chuàng)建界面元素。本步驟中,主系統(tǒng)實(shí)現(xiàn)界面元素的創(chuàng)建,比如創(chuàng)建基于API的工具條窗體句柄并設(shè)置為3D樣式,或者添加一BCG樣式按鈕等等具體的創(chuàng)建過程。
具體的創(chuàng)建方法很多,屬于本領(lǐng)域技術(shù)人員公知技術(shù),這里不再詳述。主系統(tǒng)中的控件創(chuàng)建模塊統(tǒng)一管理界面元素或其它控件的用于標(biāo)識不同界面元素的命令標(biāo)識(ID)??丶?chuàng)建模塊為每一個創(chuàng)建的界面元素項分 配唯一命令I(lǐng)D。該方法還包括主系統(tǒng)通過廣播的方式向插件發(fā)送需要顯示的界面窗體對 應(yīng)的ID,插件按照接收到的命令I(lǐng)D調(diào)用界面元素處理模塊完成該命令I(lǐng)D 對應(yīng)的界面元素的功能和狀態(tài)變化,并返回給主系統(tǒng)顯示。當(dāng)需要不同風(fēng)格的界面元素時,只需要在主系統(tǒng)重新實(shí)現(xiàn)控件創(chuàng)建模 塊,或者在系統(tǒng)中預(yù)先設(shè)置多個不同風(fēng)格的控件創(chuàng)建模塊,并根據(jù)當(dāng)前需求 選擇其中的空間創(chuàng)建模塊實(shí)現(xiàn)界面元素的創(chuàng)建。通過本發(fā)明的過程,既實(shí)現(xiàn)了界面元素本身應(yīng)有的功能即界面的顯示和 觸發(fā)事件的實(shí)現(xiàn),還將界面元素的界面邏輯和功能邏輯分開,使得主系統(tǒng)提 供界面元素的界面風(fēng)格,插件提供界面元素功能邏輯,實(shí)現(xiàn)了插件適應(yīng)不同 的主系統(tǒng),擴(kuò)展提高了插件的可擴(kuò)展性。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù) 范圍,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種創(chuàng)建界面元素的系統(tǒng),其特征在于,該系統(tǒng)包括主系統(tǒng)和插件,其中,主系統(tǒng)用于實(shí)現(xiàn)界面元素的實(shí)際創(chuàng)建,并提供界面元素的顯示樣式;插件用于實(shí)現(xiàn)界面元素具體的功能實(shí)現(xiàn);主系統(tǒng)需要界面元素時,從插件獲取界面元素信息,并根據(jù)獲得的界面元素信息,通知插件創(chuàng)建界面元素;插件在創(chuàng)建過程中調(diào)用主系統(tǒng)完成實(shí)際的界面元素創(chuàng)建。
2. 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述主系統(tǒng)包括界面 窗體模塊和控件創(chuàng)建模塊,其中,界面窗體模塊,用于向所述插件發(fā)送查詢請求;接收來自所述插件的查詢響應(yīng),根據(jù)獲得的查詢結(jié)果獲取需要創(chuàng)建的界面元素;向所述插件發(fā)送創(chuàng)建請求;控件創(chuàng)建模塊,用于接收來自插件的創(chuàng)建通知,完成界面元素的實(shí)際創(chuàng)建,并為每一個創(chuàng)建的界面元素項分配用于標(biāo)識不同界面元素的命令標(biāo)識ID。
3. 根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述控件創(chuàng)建模塊為一組 COM組件接口。
4. 根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述插件包括控件查詢模 塊和界面元素創(chuàng)建模塊,其中,控件查詢模塊,接收來自所述主系統(tǒng)的查詢請求,獲取插件包含的界面元 素的信息,并將該信息攜帶在查詢響應(yīng)中通知給所述主系統(tǒng);界面元素創(chuàng)建模塊,接收來自所述主系統(tǒng)的創(chuàng)建請求,通知所述主系統(tǒng)的 控件創(chuàng)建模塊創(chuàng)建界面元素。
5. 根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述界面窗體模塊還用于, 向所述插件中的界面元素功能處理模塊廣播需要顯示的界面窗體對應(yīng)的命令 ID;顯示所述插件返回的界面元素; 所述插件還包括界面元素功能處理模塊,根據(jù)接收到的命令I(lǐng)D,完成 該命令I(lǐng)D對應(yīng)的界面元素的功能和狀態(tài)變化,并返回界面窗體模塊。
6. 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述插件為一個或一個 以上;所述界面元素為工具條。
7. 根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述控件創(chuàng)建模塊為一 個或一個以上。
8. —種創(chuàng)建界面元素的方法,其特征在于,該方法包括以下步驟A. 主系統(tǒng)需要界面元素時,從插件獲取界面元素信息,并根據(jù)獲得的 界面元素信息,通知插件創(chuàng)建界面元素;B. 插件調(diào)用主系統(tǒng)的控件創(chuàng)建模塊創(chuàng)建界面元素。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,該方法還包括所述主 系統(tǒng)的控件創(chuàng)建模塊為每一個創(chuàng)建的界面元素項分配用于標(biāo)識不同界面元素 的命令才示識ID。
10. 根據(jù)權(quán)利要求9所述的方法,其特征在于,該方法還包括所述 主系統(tǒng)通過廣播的方式向插件發(fā)送需要顯示的界面窗體對應(yīng)的ID,所述插件按 照接收到的命令I(lǐng)D調(diào)用界面元素處理模塊完成該命令I(lǐng)D對應(yīng)的界面元素的 功能和狀態(tài)變化,并返回給主系統(tǒng)顯示。
11. 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述界面元素為工具 條;所述界面元素信息為有/無界面元素,或界面元素的個數(shù)。
全文摘要
本發(fā)明公開了一種加載界面元素的系統(tǒng)及方法,本發(fā)明將主系統(tǒng)的實(shí)現(xiàn)和插件的實(shí)現(xiàn)完全分離,將界面元素的界面邏輯和功能邏輯分開,使得主系統(tǒng)提供界面元素的界面風(fēng)格,插件提供界面元素內(nèi)容及功能邏輯,實(shí)現(xiàn)了插件適應(yīng)不同的主系統(tǒng),擴(kuò)展提高了插件的可擴(kuò)展性。
文檔編號G06F9/44GK101162424SQ200610113699
公開日2008年4月16日 申請日期2006年10月13日 優(yōu)先權(quán)日2006年10月13日
發(fā)明者侯月文, 明 李 申請人:北京書生國際信息技術(shù)有限公司