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