CN104461600A - 一种加载界面元素的系统及方法 - Google Patents
一种加载界面元素的系统及方法 Download PDFInfo
- Publication number
- CN104461600A CN104461600A CN201310445468.7A CN201310445468A CN104461600A CN 104461600 A CN104461600 A CN 104461600A CN 201310445468 A CN201310445468 A CN 201310445468A CN 104461600 A CN104461600 A CN 104461600A
- Authority
- CN
- China
- Prior art keywords
- interface element
- plug
- unit
- main system
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种加载界面元素的系统及方法,本发明将主系统的实现和插件的实现完全分离,将界面元素的界面逻辑和功能逻辑分开,使得主系统提供界面元素的界面风格,插件提供界面元素内容及功能逻辑,实现了插件适应不同的主系统,扩展提高了插件的可扩展性。
Description
技术领域
本发明涉及软件架构实现技术,尤指一种加载界面元素的系统及方法。
背景技术
在软件架构设计中,插件是具有统一接口的一组组件,插件可以动态的被主系统加载并实现独立的功能。由于插件的高扩展性,使其在现在软件架构设计中应用越来越广泛,相应的越来越多的界面元素也被设计在插件中实现,其中最常用的界面元素就是工具条。
以加载工具条为例,目前的实现方法主要有两种,第一种是在插件中生成工具条即创建工具条窗体句柄,然后通过该句柄添加工具条按钮,再传递给主系统显示;另一种是在主系统中创建工具条窗体句柄,然后将创建好的句柄发送给插件,由插件通过该句柄添加工具条按钮。
由于工具条的实现方式很多,比如API级别的Handle,或者MFC级别的工具条实现类的指针CToolBar*,或者BCG类似的界面类库中的某种特效工具条等等。为了保证主系统能够识别插件创建出的工具条,主系统与插件之间约定一种实现方式,但是这样却限制了工具条实现效果的扩展,而扩展是插件系统最重要的一个指标。
从现有实现方法可见,主系统和插件必须了解对方的实现细节,当一方变化都会引起另一方无法正确运行,最终,结构的高耦合性使得插件的扩展性无法充分实现。此外,由于主系统与插件之间有了特殊约定,就意味着模块耦合性增大,创建的工具条很可能成为一种封装不完善的设计。
发明内容
有鉴于此,本发明的主要目的在于提供一种加载界面元素的系统,能够提高插件的可扩展性。
本发明的另一目的在于提供一种加载界面元素的方法,能够提高插件的可扩展性。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种创建界面元素的系统,该系统包括:主系统和插件,其中,
主系统用于实现界面元素的实际创建,并提供界面元素的显示样式;
插件用于实现界面元素具体的功能实现;
主系统需要界面元素时,从插件获取界面元素信息,并根据获得的界面元素信息,通知插件创建界面元素;插件在创建过程中调用主系统完成实际的界面元素创建。
所述主系统包括:界面窗体模块和控件创建模块,其中,
界面窗体模块,用于向所述插件发送查询请求;接收来自所述插件的查询响应,根据获得的查询结果获取需要创建的界面元素;向所述插件发送创建请求;
控件创建模块,用于接收来自插件的创建通知,完成界面元素的实际创建,并为每一个创建的界面元素项分配用于标识不同界面元素的命令标识ID。
所述控件创建模块为一组COM组件接口。
所述插件包括:控件查询模块和界面元素创建模块,其中,
控件查询模块,接收来自所述主系统的查询请求,获取插件包含的界面元素的信息,并将该信息携带在查询响应中通知给所述主系统;
界面元素创建模块,接收来自所述主系统的创建请求,通知所述主系统的控件创建模块创建界面元素。
所述界面窗体模块还用于,向所述插件中的界面元素功能处理模块广播需要显示的界面窗体对应的命令ID;显示所述插件返回的界面元素;
所述插件还包括:界面元素功能处理模块,根据接收到的命令ID,完成该命令ID对应的界面元素的功能和状态变化,并返回界面窗体模块。
所述插件为一个或一个以上;所述界面元素为工具条。
所述控件创建模块为一个或一个以上。
一种创建界面元素的方法,该方法包括以下步骤:
A.主系统需要界面元素时,从插件获取界面元素信息,并根据获得的界面元素信息,通知插件创建界面元素;
B.插件调用主系统的控件创建模块创建界面元素。
该方法还包括:所述主系统的控件创建模块为每一个创建的界面元素项分配用于标识不同界面元素的命令标识ID。
该方法还包括:所述主系统通过广播的方式向插件发送需要显示的界面窗体对应的ID,所述插件按照接收到的命令ID调用界面元素处理模块完成该命令ID对应的界面元素的功能和状态变化,并返回给主系统显示。
所述界面元素为工具条;所述界面元素信息为有/无界面元素,或界面元素的个数。
由上述技术方案可见,本发明主系统需要界面元素时,从插件获取界面元素信息,主系统根据获得的界面元素信息,通知插件创建界面元素,插件调用主系统创建界面元素并在主系统显示。本发明将主系统的实现和插件的实现完全分离,将界面元素的界面逻辑和功能逻辑分开,使得主系统提供界面元素的界面风格,插件提供界面元素内容及功能逻辑,实现了插件适应不同的主系统,扩展提高了插件的可扩展性。
附图说明
图1是本发明系统组成示意图;
图2是本发明方法的流程图。
具体实施方式
本发明的核心思想是:主系统需要界面元素时,从插件获取界面元素信息,并根据获得的界面元素信息,通知插件创建界面元素,插件在创建过程中调用主系统的控件创建模块创建界面元素。
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举较佳实施例,对本发明进一步详细说明。
图1是本发明创建界面元素的系统组成示意图,如图1所示,该系统包括主系统和插件两部分,其中主系统用于实现界面元素的实际创建并提供界面元素的显示样式,插件用于实现界面元素具体的功能实现。
从上述主系统与插件的功能描述可见,主系统提供了界面逻辑,即界面元素的实现样式或风格,这样,主系统只要提供不同的界面风格实现,就可以在不更改插件提供的界面元素代码的情况下,灵活变换界面风格;
而插件提供了功能逻辑,即界面元素具体的功能实现。插件通过提供界面元素信息,让用户可以通过点击界面元素实现相应的功能。由于界面元素的界面的实际创建是由主系统封装实现的,所以插件本身并不关心界面到底会显示成什么样子,只需提供界面元素内容及功能实现即可。
主系统中包括:界面窗体模块和控建创建模块。
其中,界面窗体模块,用于向插件中的控件查询模块发送查询请求;接收来自插件中控件查询模块的查询响应,根据获得的查询结果获取需要创建的界面元素,并向插件的界面元素创建模块发送创建请求;
界面窗体模块是需要加载界面元素的容器,例如应用程序的主界面等等。
控件创建模块,用于接收来自插件的界面元素创建模块的创建通知,完成界面元素的实际创建,并为每一个创建的界面元素项分配用于标识不同界面元素的命令标识(ID)。控件创建模块是一组COM组件接口,具体实现属于本领域技术人员公知技术,这里不再详述。COM是Component ObjectModel的缩写,是一种组件技术。所述控件创建模块为一个或一个以上。
至少一个插件包括:控件查询模块和界面元素创建模块。
其中,控件查询模块,接收来自主系统的查询请求,获取插件包含的界面元素信息,并将获得的信息携带在查询响应中返回主系统;
界面元素创建模块,接收来自主系统的界面窗体模块的创建请求,调用主系统的控件创建模块完成界面元素的创建。
所述界面窗体模块还用于,向所述插件中的界面元素功能处理模块广播需要显示的界面窗体对应的命令ID;显示所述插件返回的界面元素;
所述插件还包括:界面元素功能处理模块,根据接收到的命令ID,完成该命令ID对应的界面元素的功能和状态变化,并返回界面窗体模块。
本发明系统中,创建由插件中的界面元素创建模块来调用,比如创建一工具条,添加一按钮等等抽象的创建过程,即与界面无关,只表达创建语义,之后界面元素创建模块调用主系统中的控件创建模块,而实现界面元素的创建,比如创建基于API的工具条窗体句柄并设置为3D样式,或者添加一BCG样式按钮等等具体的创建过程。这点也正体现了本发明将主系统的实现和插件的实现完全分离,将界面元素的界面逻辑和功能逻辑分开,使得主系统提供界面元素的界面风格,插件提供界面元素功能逻辑,实现了插件适应不同的主系统,扩展提高了插件的可扩展性的优点。
图2是本发明实现加载界面元素的方法的流程图,如图2所示,包括以下步骤:
步骤200:主系统需要界面元素时,从插件获取界面元素信息。
本步骤中,主系统在接收到请求显示界面元素的显示请求时,向插件发送查询请求,要求插件查询自身能提供的界面元素信息,并将查询结果返回给主系统。
查询结果可按照预先设定的要求给出,比如最简单的就是有/无界面元素,界面元素的个数等。
步骤201:主系统根据获得的界面元素信息,通知(调用)插件创建界面元素。
本步骤中,创建由插件来调用,比如创建一工具条,添加一按钮等等抽象的创建过程,即与界面无关,只表达创建语义。
步骤202:插件调用主系统的控件创建模块创建界面元素。
本步骤中,主系统实现界面元素的创建,比如创建基于API的工具条窗体句柄并设置为3D样式,或者添加一BCG样式按钮等等具体的创建过程。具体的创建方法很多,属于本领域技术人员公知技术,这里不再详述。
主系统中的控件创建模块统一管理界面元素或其它控件的用于标识不同界面元素的命令标识(ID)。控件创建模块为每一个创建的界面元素项分配唯一命令ID。
该方法还包括:主系统通过广播的方式向插件发送需要显示的界面窗体对应的ID,插件按照接收到的命令ID调用界面元素处理模块完成该命令ID对应的界面元素的功能和状态变化,并返回给主系统显示。
当需要不同风格的界面元素时,只需要在主系统重新实现控件创建模块,或者在系统中预先设置多个不同风格的控件创建模块,并根据当前需求选择其中的空间创建模块实现界面元素的创建。
通过本发明的过程,既实现了界面元素本身应有的功能即界面的显示和触发事件的实现,还将界面元素的界面逻辑和功能逻辑分开,使得主系统提供界面元素的界面风格,插件提供界面元素功能逻辑,实现了插件适应不同的主系统,扩展提高了插件的可扩展性。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
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对应的界面元素的功能和状态变化,并返回给主系统显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310445468.7A CN104461600A (zh) | 2013-09-25 | 2013-09-25 | 一种加载界面元素的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310445468.7A CN104461600A (zh) | 2013-09-25 | 2013-09-25 | 一种加载界面元素的系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104461600A true CN104461600A (zh) | 2015-03-25 |
Family
ID=52907708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310445468.7A Pending CN104461600A (zh) | 2013-09-25 | 2013-09-25 | 一种加载界面元素的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461600A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700886A (zh) * | 2016-01-14 | 2016-06-22 | 腾讯科技(北京)有限公司 | 插件界面的显示方法及终端 |
CN105930181A (zh) * | 2016-04-12 | 2016-09-07 | 重庆金美通信有限责任公司 | 基于插件机制的运行时界面集成方法 |
-
2013
- 2013-09-25 CN CN201310445468.7A patent/CN104461600A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700886A (zh) * | 2016-01-14 | 2016-06-22 | 腾讯科技(北京)有限公司 | 插件界面的显示方法及终端 |
CN105700886B (zh) * | 2016-01-14 | 2019-02-26 | 腾讯科技(北京)有限公司 | 插件界面的显示方法及终端 |
CN105930181A (zh) * | 2016-04-12 | 2016-09-07 | 重庆金美通信有限责任公司 | 基于插件机制的运行时界面集成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101162424B (zh) | 一种加载界面元素的系统及方法 | |
JP6403177B1 (ja) | ブロックチェーン・ネットワークにおいてスマートコントラクトを実行可能にするための方法及び当該ネットワークを構成するためのノード | |
CN107040416B (zh) | 一种基于Cairngorm框架的虚拟数据中心可视化管理方法 | |
CN109558273B (zh) | 一种磁盘阵列备份方法、电子设备及磁盘阵列 | |
CN110213304B (zh) | 一种区块链网络互联方法与系统 | |
CN106325882B (zh) | 一种锁屏界面的生成方法及装置 | |
CN105528356A (zh) | 结构化标签生成方法、使用方法及装置 | |
CN104239368A (zh) | 基于设置的表单数据查询方法 | |
CN109617941A (zh) | 数据推送方法、装置、计算机设备及计算机可读存储介质 | |
CN103778249A (zh) | 报表定制方法及移动终端 | |
CN104541248A (zh) | 计算系统对屏障命令的处理 | |
CN104598233A (zh) | 一种代码生成方法 | |
CN109491723A (zh) | 一种应用程序运行方法、应用程序运行装置及移动终端 | |
CN105404530B (zh) | 一种实现简易部署和使用私有云的系统及方法 | |
CN104461600A (zh) | 一种加载界面元素的系统及方法 | |
CN104283773A (zh) | 一种微博控制物联网设备的系统 | |
CN104598622A (zh) | 一种数据修改日志的实现方法和系统及应用服务器 | |
KR20180106219A (ko) | 전자 장치가 제공하는 서비스와 관련된 서비스 모델 블록을 포함하는 메모리 맵의 구성 방법 | |
CN105450589A (zh) | 远程调用方法及系统 | |
CN102455905B (zh) | 建立主面板界面的方法、系统,主面板和主面板界面系统 | |
CN104731804B (zh) | 一种建立通用查询框架的方法及装置 | |
CN105207820A (zh) | 一种局域网中的终端设备管理方法和装置 | |
CN105427149A (zh) | 一种基于soa扩展框架的跨境电子商务bpo服务方法及装置 | |
CN104573997A (zh) | 一种配网成图及专题图应用架构设计方法 | |
CN102281260A (zh) | 监控规则的生成方法和服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150325 |
|
WD01 | Invention patent application deemed withdrawn after publication |