CN113467975B - 一种解耦的程序开发方法及系统 - Google Patents
一种解耦的程序开发方法及系统 Download PDFInfo
- Publication number
- CN113467975B CN113467975B CN202110837004.5A CN202110837004A CN113467975B CN 113467975 B CN113467975 B CN 113467975B CN 202110837004 A CN202110837004 A CN 202110837004A CN 113467975 B CN113467975 B CN 113467975B
- Authority
- CN
- China
- Prior art keywords
- data
- type
- processor
- judging whether
- parameter
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种解耦的程序开发方法,所述方法包括以下步骤:步骤S1、处理器管理注册所有程序集中的处理器;步骤S2、输入处理器创建数据;步骤S3、处理器管理获取处理器实例;步骤S4、判断处理器实例是否有效,是,则返回处理器实例,否,则返回处理器创建异常;步骤S5、等待输入处理器交互数据,数据管理转换交互数据类型;步骤S6、处理器执行交互数据对应交互事件,数据管理转换执行结果类型为通用数据类型;步骤S7、返回交互事件处理结果,判断是否为处理器销毁交互事件,是,则停止,否,则返回等待输入处理器交互数据;本发明能够将主程序与功能组件进行解耦。
Description
技术领域
本发明涉及计算机技术领域,特别是一种解耦的程序开发方法及系统。
背景技术
现有技术中程序与功能组件耦合度高、不支持动态执行功能组件交互逻辑,需要预先设定好脚本的处理逻辑然后才能支持脚本化程序执行,且不支持动态交互逻辑控制,拓展困难,无法广泛使用。
发明内容
为克服上述问题,本发明的目的是提供一种能够将主程序与功能组件进行解耦的方法。
本发明采用以下方案实现:一种解耦的程序开发方法,所述方法包括以下步骤:
步骤S1、处理器管理注册所有程序集中的处理器;
步骤S2、输入处理器创建数据;
步骤S3、处理器管理获取处理器实例;
步骤S4、判断处理器实例是否有效,是,则返回处理器实例,否,则返回处理器创建异常;
步骤S5、等待输入处理器交互数据,数据管理转换交互数据类型;
步骤S6、处理器执行交互数据对应交互事件,数据管理转换执行结果类型为通用数据类型;
步骤S7、返回交互事件处理结果,判断是否为处理器销毁交互事件,是,则停止,
否,则返回等待输入处理器交互数据。
进一步的,所述步骤S1进一步具体包括以下步骤:
步骤S11、获取处理器基础所在程序集,获取当前应用程序的所有程序集;
步骤S12、筛选所有程序集中其中与基础程序集有引用关系的程序集,将这些程序集加入一个程序集队列;
步骤S13、判断程序集队列是否为空,是,则注册完成,否,则从程序集队列中读取一个程序集,获取程序集的所有类类型,筛选其中继承自处理器基础的类类型,将这些类类型加入一个类类型队列;
步骤S14、判断类类型队列是否为空,是,则注册完成,否,则从类类型队列中读取一个类类型,尝试创建一个类类型的实例,判断是否创建成功,是,则获取实例上的类型字段,判断此类型字段是否已经被处理器集合注册,是,则判断已注册的类类型与此类型是否相同,否,则将此类类型注册到处理器集合中,打印提示信息“重复注册”;否,则判断类类型队列中是否还有其他类类型;
步骤S15、判断已注册的类类型与此类型是否相同,是,则打印提示信息“重复注册”,否,则打印提示信息“注册类型变更”,将此类类型覆盖处理器集合中的注册;
步骤S16、判断此类类型是否继承自静态处理器基础,是,则初始化此类类型的实例,判断此类型字段是否已经被静态处理器集合注册;否,则销毁此类类型的实例;
步骤S17、判断此类型字段是否已经被静态处理器集合注册,是,则将此类类型实例覆盖静态处理器集合中的注册,否,则将此类类型实例注册到静态处理器集合中;
步骤S18、判断类类型队列中是否还有其他类类型,否,则判断程序集队列中是
否还有其他程序集,是,则从程序集队列中读取一个程序集,否,则注册完成。
进一步的,所述步骤S3进一步具体包括以下步骤:
步骤S31、输入处理器类型;
步骤S32、判断是否包含此类型的处理器,是,则判断处理器是否为静态处理器,否,则返回创建失败异常;
步骤S33、判断处理器是否为静态处理器,是,则返回记录的静态处理器实例,
否,则创建一个此类型的处理器实例,返回创建的处理器。
进一步的,所述步骤S5进一步具体包括以下步骤:
步骤S51、注册参数类型转换规则,输入数据;
步骤S52、判断输入数据类型是否目标数据类型,是,则返回目标类型数据,否,则判断是否通用数据结构,是,则创建一个目标类型数据,获取目标类型的所有参数名称记录为参数名称队列;否,则判断是否Json数据;
步骤S53、判断参数名称队列是否为空,是,则返回目标类型数据,否,则从参数名称队列中读取一个参数名称,读取参数数据中参数名称对应的值数据,判断值数据是否为参数名称对应的参数类型;
步骤S54、判断值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为参数名称对应的参数类型;
步骤S55、判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回目标类型数据;判断转换后值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,否,则判断参数名称队列是否还有其他参数名称;
步骤S56、判断是否Json数据,是,则将Json数据识别为Json实例类型,否,则判断是否Json文件路径;
步骤S57、创建一个通用数据,将Json数据中的基础数据填充到通用参数数据的对应字段值中,判断是否是根节点数据,是,则记录为根节点数据,否,则添加到父节点数据的子数据字段中,判断Json数据是否包含子数据,是,则创建一个通用数据,否,则传递根节点参数数据,创建一个目标类型数据;
步骤S58、判断是否Json文件路径,是,则读取文件中的Json数据,将Json数据识别为Json数据识别为Json实例类型,否,则停止。
进一步的,所述步骤S6进一步具体为:
步骤S61、注册参数类型转换规则,输入数据;
步骤S62、判断输入类型,是否基础数据类型,是,则返回基础数据类型数据,停止,否,判断是否通用数据类型;
步骤S63、判断是否通用数据类型,是,则返回通用数据类型数据,否,则创建一个通用数据类型数据,获取输入数据类型的所有参数记录为参数名称队列,判断参数名称队列是否为空;
步骤S64、判断参数名称队列是否为空,是,则返回通用数据类型数据,否,则从参数名称队列中读取一个参数名称,读取输入数据中参数名称对应的值数据,判断值数据是否为通用数据类型或基础数据类型;
步骤S65、判断值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为通用数据类型或基础数据类型;
步骤S66、判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回通用数据类型数据;
步骤S67、判断转换后值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,否,则判断参数名称队列是否还有其他参数名称。
进一步的,所述步骤S7进一步具体为:
步骤S71、输入交互数据;
步骤S72、判断交互数据是否为所需的数据类型,是,则从交互数据中读取交互事件类型,否,则从数据管理转换交互数据类型;
步骤S73、判断交互事件类型是否有效,是,则执行交互事件绑定的功能组件处理逻辑传递交互数据,返回功能组件处理逻辑执行结果,判断执行结果是否为通用的数据类型;否,则返回交互事件处理异常;
步骤S74、判断执行结果是否为通用的数据类型,是,则返回通用数据类型执行结果,否,则数据管理转换执行结果类型为通用数据类型。
本发明还提供了一种解耦的程序开发系统,包括处理器管理模块、创建模块、获取实例模块、实例判断模块、数据管理模块、交互模块和处理器模块,所述处理器管理模块,即处理器管理注册所有程序集中的处理器;所述创建模块,即输入处理器创建数据;所述获取实例模块,即处理器管理获取处理器实例;所述实例判断模块,即判断处理器实例是否有效,是,则返回处理器实例,否,则返回处理器创建异常;所述数据管理模块,即等待输入处理器交互数据,数据管理转换交互数据类型;所述交互模块,即处理器执行交互数据对应交互事件,数据管理转换执行结果类型为通用数据类型;所述处理器模块,即返回交互事件处理结果,判断是否为处理器销毁交互事件,是,则停止,否,则返回等待输入处理器交互数据。
进一步的,所述处理器管理模块进一步具体包括:程序集单元、筛选单元、队列单元、集合单元、提示单元、静态处理器单元、静态注册单元和注册完成单元;所述程序集单元,即获取处理器基础所在程序集,获取当前应用程序的所有程序集;所述筛选单元,即筛选所有程序集中其中与基础程序集有引用关系的程序集,将这些程序集加入一个程序集队列;所述队列单元,即判断程序集队列是否为空,是,则注册完成,否,则从程序集队列中读取一个程序集,获取程序集的所有类类型,筛选其中继承自处理器基础的类类型,将这些类类型加入一个类类型队列;所述集合单元,即判断类类型队列是否为空,是,则注册完成,否,则从类类型队列中读取一个类类型,尝试创建一个类类型的实例,判断是否创建成功,是,则获取实例上的类型字段,判断此类型字段是否已经被处理器集合注册,是,则判断已注册的类类型与此类型是否相同,否,则将此类类型注册到处理器集合中,打印提示信息“重复注册”;否,则判断类类型队列中是否还有其他类类型;所述提示单元,即判断已注册的类类型与此类型是否相同,是,则打印提示信息“重复注册”,否,则打印提示信息“注册类型变更”,将此类类型覆盖处理器集合中的注册;所述静态处理器单元,即判断此类类型是否继承自静态处理器基础,是,则初始化此类类型的实例,判断此类型字段是否已经被静态处理器集合注册;否,则销毁此类类型的实例;所述静态注册单元,即判断此类型字段是否已经被静态处理器集合注册,是,则将此类类型实例覆盖静态处理器集合中的注册,否,则将此类类型实例注册到静态处理器集合中;所述注册完成单元,即判断类类型队列中是否还有其他类类型,否,则判断程序集队列中是否还有其他程序集,是,则从程序集队列中读取一个程序集,否,则注册完成。
进一步的,所述获取实例模块进一步包括:输入单元、异常单元和静态处理器实例单元,所述输入单元,即输入处理器类型;所述异常单元,即判断是否包含此类型的处理器,是,则判断处理器是否为静态处理器,否,则返回创建失败异常;所述静态处理器实例单元,即判断处理器是否为静态处理器,是,则返回记录的静态处理器实例,否,则创建一个此类型的处理器实例,返回创建的处理器。
进一步的,所述数据管理模块进一步包括:注册单元、目标单元、读取单元、参数名称队列单元、值数据单元、识别单元、通用数据单元和文件路径单元;所述注册单元,即注册参数类型转换规则,输入数据;所述目标单元,即判断输入数据类型是否目标数据类型,是,则返回目标类型数据,否,则判断是否通用数据结构,是,则创建一个目标类型数据,获取目标类型的所有参数名称记录为参数名称队列;否,则判断是否Json数据;所述读取单元,即判断参数名称队列是否为空,是,则返回目标类型数据,否,则从参数名称队列中读取一个参数名称,读取参数数据中参数名称对应的值数据,判断值数据是否为参数名称对应的参数类型;所述参数名称队列单元,即判断值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为参数名称对应的参数类型;所述值数据单元,即判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回目标类型数据;判断转换后值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,否,则判断参数名称队列是否还有其他参数名称;所述识别单元,即判断是否Json数据,是,则将Json数据识别为Json实例类型,否,则判断是否Json文件路径;所述通用数据单元,即创建一个通用数据,将Json数据中的基础数据填充到通用参数数据的对应字段值中,判断是否是根节点数据,是,则记录为根节点数据,否,则添加到父节点数据的子数据字段中,判断Json数据是否包含子数据,是,则创建一个通用数据,否,则传递根节点参数数据,创建一个目标类型数据;所述文件路径单元,即判断是否Json文件路径,是,则读取文件中的Json数据,将Json数据识别为Json数据识别为Json实例类型,否,则停止。
进一步的,所述交互模块进一步具体包括:转换单元、输入类型单元、数据类型单元、读取名称单元、记录单元、返回单元和判断转换单元,所述转换单元,即注册参数类型转换规则,输入数据;所述输入类型单元,即判断输入类型,是否基础数据类型,是,则返回基础数据类型数据,停止,否,判断是否通用数据类型;所述数据类型单元,即判断是否通用数据类型,是,则返回通用数据类型数据,否,则创建一个通用数据类型数据,获取输入数据类型的所有参数记录为参数名称队列,判断参数名称队列是否为空;所述读取名称单元,即判断参数名称队列是否为空,是,则返回通用数据类型数据,否,则从参数名称队列中读取一个参数名称,读取输入数据中参数名称对应的值数据,判断值数据是否为通用数据类型或基础数据类型;所述记录单元,即判断值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为通用数据类型或基础数据类型;所述返回单元,即判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回通用数据类型数据;所述判断转换单元,即判断转换后值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,否,则判断参数名称队列是否还有其他参数名称。
进一步的,所述处理器模块进一步具体包括:交互数据单元、读取交互数据单元、交互事件单元和执行结果单元;所述交互数据单元,即输入交互数据;所述读取交互数据单元,即判断交互数据是否为所需的数据类型,是,则从交互数据中读取交互事件类型,否,则从数据管理转换交互数据类型;所述交互事件单元,即判断交互事件类型是否有效,是,则执行交互事件绑定的功能组件处理逻辑传递交互数据,返回功能组件处理逻辑执行结果,判断执行结果是否为通用的数据类型;否,则返回交互事件处理异常;所述执行结果单元,即判断执行结果是否为通用的数据类型,是,则返回通用数据类型执行结果,否,则数据管理转换执行结果类型为通用数据类型。
本发明的有益效果在于:本发明基于处理器实现主程序与功能组件进行解耦,通过处理器管理注册与获取处理器,然后调用处理器解析交互数据,从而执行功能组件交互逻辑;当处理器收到交互数据时时通过数据管理转换交互数据类型,触发功能组件交互事件,然后通过数据管理转换执行结果数据类型为通用数据类型,实现完备的功能组件交互系统;本发明实现主程序与功能组件的解耦,减少了功能组件接入主程序开发消耗,支持主程序与功能组件同步开发,缩短了功能组件的开发、接入、调试周期,加快了开发进度,且使用本发明生产的程序具有统一的调用风格,更少的代码脚本,更易维护,后期维护成本更低;本发明中的处理器提供了基础处理器事件,且支持自定义组件功能的拓展,可以满足各类应用场景的需要。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的系统原理框图。
图3为处理器管理模块获取处理器实例流程图。
图4为处理器管理模块注册所有程序集中的处理器流程图。
图5为数据管理模块转换交互数据类型流程图。
图6为数据管理模块转换执行结果类型为通用数据类型流程图。
图7为处理器模块执行交互数据对应的交互事件流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种解耦的程序开发方法,所述方法包括以下步骤:
步骤S1、处理器管理注册所有程序集中的处理器;
步骤S2、输入处理器创建数据;
步骤S3、处理器管理获取处理器实例;
步骤S4、判断处理器实例是否有效,是,则返回处理器实例,否,则返回处理器创建异常;
步骤S5、等待输入处理器交互数据,数据管理转换交互数据类型;
步骤S6、处理器执行交互数据对应交互事件,数据管理转换执行结果类型为通用数据类型;
步骤S7、返回交互事件处理结果,判断是否为处理器销毁交互事件,是,则停止,否,则返回等待输入处理器交互数据。
下面通过一具体实施例对本发明作进一步说明:
本发明基于处理器实现主程序与功能组件进行解耦,通过处理器管理模块注册与获取处理器,然后调用处理器模块解析交互数据,从而执行功能组件交互逻辑。当处理器模块收到交互数据时时通过数据管理模块转换交互数据类型,触发功能组件交互事件,然后通过数据管理模块转换执行结果数据类型为通用数据类型,实现完备的功能组件交互系统。
本发明中主程序的定义为程序运行的主要流程;
本发明中功能组件的定义为程序中除了主流程外其它功能的实现流程;
本发明中处理器的定义为通过解析交互数据触发功能组件交互逻辑的实现流程;
本发明中解耦的定义为断开主程序与功能组件的引用关系;
本发明中通用数据类型数据的定义为一种仅与系统库有引用关系的数据结构类型的数据,不依赖于任何功能组件;
本发明中基础数据类型数据的定义包括字符串数据、浮点型数据、布尔类型数据等系统库中定义的数据类型的数据。
本发明实现方案包含三个模块。
三个模块分别为处理器管理模块、数据管理模块、处理器模块。
具体描述如下:
1)处理器管理模块
请参阅图3和图4所示,该模块包含处理器管理模块获取处理器实例及注册所有程序集中的处理器两个功能,为主程序与处理器模块提供处理器的获取能力。
2)数据管理模块
请参阅图5和图6所示,该模块包含数据管理模块转换交互数据类型及转换执行结果类型为通用数据类型两个功能,为处理器模块提供数据转换的能力,实现将Json数据、Json文件路径、通用数据类型数据转换为功能组件所需的数据类型数据,以及将功能组件返回的数据转换为通用数据类型数据或基础数据类型数据。
3)处理器模块
请参阅图7所示,该模块实现主程序与功能组件的动态交互逻辑控制支持。与主程序没有引用关系,实现主程序与功能组件的解耦。
本发明适用于所有类型程序进行解耦开发,包括但不限于大型功能组件的解耦、游戏的解耦或组件化开发、其它应用程序的解耦或组件化开发。
总之,本发明可应用于所有类型程序的开发与交互过程。和常规的程序开发方案不同,本发明通过将主程序与功能组件进行解耦,并支持通过处理器动态执行功能组件交互逻辑。本发明解决了功能组件使用复杂、与主程序耦合度高、无法动态构建等问题。
请参阅图2所示,本发明还提供了一种解耦的程序开发系统,包括处理器管理模块、创建模块、获取实例模块、实例判断模块、数据管理模块、交互模块和处理器模块,所述处理器管理模块,即处理器管理注册所有程序集中的处理器;所述创建模块,即输入处理器创建数据;所述获取实例模块,即处理器管理获取处理器实例;所述实例判断模块,即判断处理器实例是否有效,是,则返回处理器实例,否,则返回处理器创建异常;所述数据管理模块,即等待输入处理器交互数据,数据管理转换交互数据类型;所述交互模块,即处理器执行交互数据对应交互事件,数据管理转换执行结果类型为通用数据类型;所述处理器模块,即返回交互事件处理结果,判断是否为处理器销毁交互事件,是,则停止,否,则返回等待输入处理器交互数据。
所述处理器管理模块进一步具体包括:程序集单元、筛选单元、队列单元、集合单元、提示单元、静态处理器单元、静态注册单元和注册完成单元;所述程序集单元,即获取处理器基础所在程序集,获取当前应用程序的所有程序集;所述筛选单元,即筛选所有程序集中其中与基础程序集有引用关系的程序集,将这些程序集加入一个程序集队列;所述队列单元,即判断程序集队列是否为空,是,则注册完成,否,则从程序集队列中读取一个程序集,获取程序集的所有类类型,筛选其中继承自处理器基础的类类型,将这些类类型加入一个类类型队列;所述集合单元,即判断类类型队列是否为空,是,则注册完成,否,则从类类型队列中读取一个类类型,尝试创建一个类类型的实例,判断是否创建成功,是,则获取实例上的类型字段,判断此类型字段是否已经被处理器集合注册,是,则判断已注册的类类型与此类型是否相同,否,则将此类类型注册到处理器集合中,打印提示信息“重复注册”;否,则判断类类型队列中是否还有其他类类型;所述提示单元,即判断已注册的类类型与此类型是否相同,是,则打印提示信息“重复注册”,否,则打印提示信息“注册类型变更”,将此类类型覆盖处理器集合中的注册;所述静态处理器单元,即判断此类类型是否继承自静态处理器基础,是,则初始化此类类型的实例,判断此类型字段是否已经被静态处理器集合注册;否,则销毁此类类型的实例;所述静态注册单元,即判断此类型字段是否已经被静态处理器集合注册,是,则将此类类型实例覆盖静态处理器集合中的注册,否,则将此类类型实例注册到静态处理器集合中;所述注册完成单元,即判断类类型队列中是否还有其他类类型,否,则判断程序集队列中是否还有其他程序集,是,则从程序集队列中读取一个程序集,否,则注册完成。
所述获取实例模块进一步包括:输入单元、异常单元和静态处理器实例单元,所述输入单元,即输入处理器类型;所述异常单元,即判断是否包含此类型的处理器,是,则判断处理器是否为静态处理器,否,则返回创建失败异常;所述静态处理器实例单元,即判断处理器是否为静态处理器,是,则返回记录的静态处理器实例,否,则创建一个此类型的处理器实例,返回创建的处理器。
所述数据管理模块进一步包括:注册单元、目标单元、读取单元、参数名称队列单元、值数据单元、识别单元、通用数据单元和文件路径单元;所述注册单元,即注册参数类型转换规则,输入数据;所述目标单元,即判断输入数据类型是否目标数据类型,是,则返回目标类型数据,否,则判断是否通用数据结构,是,则创建一个目标类型数据,获取目标类型的所有参数名称记录为参数名称队列;否,则判断是否Json数据;所述读取单元,即判断参数名称队列是否为空,是,则返回目标类型数据,否,则从参数名称队列中读取一个参数名称,读取参数数据中参数名称对应的值数据,判断值数据是否为参数名称对应的参数类型;所述参数名称队列单元,即判断值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为参数名称对应的参数类型;所述值数据单元,即判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回目标类型数据;判断转换后值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,否,则判断参数名称队列是否还有其他参数名称;所述识别单元,即判断是否Json数据,是,则将Json数据识别为Json实例类型,否,则判断是否Json文件路径;所述通用数据单元,即创建一个通用数据,将Json数据中的基础数据填充到通用参数数据的对应字段值中,判断是否是根节点数据,是,则记录为根节点数据,否,则添加到父节点数据的子数据字段中,判断Json数据是否包含子数据,是,则创建一个通用数据,否,则传递根节点参数数据,创建一个目标类型数据;所述文件路径单元,即判断是否Json文件路径,是,则读取文件中的Json数据,将Json数据识别为Json数据识别为Json实例类型,否,则停止。
所述交互模块进一步具体包括:转换单元、输入类型单元、数据类型单元、读取名称单元、记录单元、返回单元和判断转换单元,所述转换单元,即注册参数类型转换规则,输入数据;所述输入类型单元,即判断输入类型,是否基础数据类型,是,则返回基础数据类型数据,停止,否,判断是否通用数据类型;所述数据类型单元,即判断是否通用数据类型,是,则返回通用数据类型数据,否,则创建一个通用数据类型数据,获取输入数据类型的所有参数记录为参数名称队列,判断参数名称队列是否为空;所述读取名称单元,即判断参数名称队列是否为空,是,则返回通用数据类型数据,否,则从参数名称队列中读取一个参数名称,读取输入数据中参数名称对应的值数据,判断值数据是否为通用数据类型或基础数据类型;所述记录单元,即判断值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为通用数据类型或基础数据类型;所述返回单元,即判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回通用数据类型数据;所述判断转换单元,即判断转换后值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,否,则判断参数名称队列是否还有其他参数名称。
所述处理器模块进一步具体包括:交互数据单元、读取交互数据单元、交互事件单元和执行结果单元;所述交互数据单元,即输入交互数据;所述读取交互数据单元,即判断交互数据是否为所需的数据类型,是,则从交互数据中读取交互事件类型,否,则从数据管理转换交互数据类型;所述交互事件单元,即判断交互事件类型是否有效,是,则执行交互事件绑定的功能组件处理逻辑传递交互数据,返回功能组件处理逻辑执行结果,判断执行结果是否为通用的数据类型;否,则返回交互事件处理异常;所述执行结果单元,即判断执行结果是否为通用的数据类型,是,则返回通用数据类型执行结果,否,则数据管理转换执行结果类型为通用数据类型。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (8)
1.一种解耦的程序开发方法,其特征在于,所述方法包括以下步骤:
步骤S1、处理器管理注册所有程序集中的处理器;
所述步骤S1进一步具体包括以下步骤:
步骤S11、获取处理器基础所在程序集,获取当前应用程序的所有程序集;
步骤S12、筛选所有程序集中其中与基础程序集有引用关系的程序集,将这些程序集加入一个程序集队列;
步骤S13、判断程序集队列是否为空,是,则注册完成,否,则从程序集队列中读取一个程序集,获取程序集的所有类类型,筛选其中继承自处理器基础的类类型,将这些类类型加入一个类类型队列;
步骤S14、判断类类型队列是否为空,是,则注册完成,否,则从类类型队列中读取一个类类型,尝试创建一个类类型的实例,判断是否创建成功,否,则判断类类型队列中是否还有其他类类型,是,则获取实例上的类型字段,判断此类型字段是否已经被处理器集合注册,是,则判断已注册的类类型与此类型是否相同,否,则将此类类型注册到处理器集合中,打印提示信息“重复注册”;
步骤S15、判断已注册的类类型与此类型是否相同,是,则打印提示信息“重复注册”,否,则打印提示信息“注册类型变更”,将此类类型覆盖处理器集合中的注册;
步骤S16、判断此类类型是否继承自静态处理器基础,是,则初始化此类类型的实例,判断此类型字段是否已经被静态处理器集合注册;否,则销毁此类类型的实例;
步骤S17、判断此类型字段是否已经被静态处理器集合注册,是,则将此类类型实例覆盖静态处理器集合中的注册,否,则将此类类型实例注册到静态处理器集合中;
步骤S18、判断类类型队列中是否还有其他类类型,否,则判断程序集队列中是否还有其他程序集,是,则从程序集队列中读取一个程序集,否,则注册完成;
步骤S2、输入处理器创建数据;
步骤S3、处理器管理获取处理器实例;
步骤S4、判断处理器实例是否有效,是,则返回处理器实例,否,则返回处理器创建异常;
步骤S5、等待输入处理器交互数据,数据管理转换交互数据类型;
所述步骤S5进一步具体包括以下步骤:
步骤S51、注册参数类型转换规则,输入数据;
步骤S52、判断输入数据类型是否目标数据类型,是,则返回目标类型数据,否,则判断是否通用数据结构,是,则创建一个目标类型数据,获取目标类型的所有参数名称记录为参数名称队列;否,则判断是否Json数据;
步骤S53、判断参数名称队列是否为空,是,则返回目标类型数据,否,则从参数名称队列中读取一个参数名称,读取参数数据中参数名称对应的值数据,判断值数据是否为参数名称对应的参数类型;
步骤S54、判断值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为参数名称对应的参数类型;
步骤S55、判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回目标类型数据;判断转换后值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,否,则判断参数名称队列是否还有其他参数名称;
步骤S56、判断是否Json数据,是,则将Json数据识别为Json实例类型,否,则判断是否Json文件路径;
步骤S57、创建一个通用数据,将Json数据中的基础数据填充到通用参数数据的对应字段值中,判断是否是根节点数据,是,则记录为根节点数据,否,则添加到父节点数据的子数据字段中,判断Json数据是否包含子数据,是,则创建一个通用数据,否,则传递根节点参数数据,创建一个目标类型数据;
步骤S58、判断是否Json文件路径,是,则读取文件中的Json数据,将Json数据识别为Json数据识别为Json实例类型,否,则停止;
步骤S6、处理器执行交互数据对应交互事件,数据管理转换执行结果类型为通用数据类型;
步骤S7、返回交互事件处理结果,判断是否为处理器销毁交互事件,是,则停止,否,则返回等待输入处理器交互数据。
2.根据权利要求1所述的一种解耦的程序开发方法,其特征在于:所述步骤S3进一步具体包括以下步骤:
步骤S31、输入处理器类型;
步骤S32、判断是否包含此类型的处理器,是,则判断处理器是否为静态处理器,否,则返回创建失败异常;
步骤S33、判断处理器是否为静态处理器,是,则返回记录的静态处理器实例,否,则创建一个此类型的处理器实例,返回创建的处理器。
3.根据权利要求1所述的一种解耦的程序开发方法,其特征在于:所述步骤S6进一步具体为:
步骤S61、注册参数类型转换规则,输入数据;
步骤S62、判断输入类型,是否基础数据类型,是,则返回基础数据类型数据,停止,否,判断是否通用数据类型;
步骤S63、判断是否通用数据类型,是,则返回通用数据类型数据,否,则创建一个通用数据类型数据,获取输入数据类型的所有参数记录为参数名称队列,判断参数名称队列是否为空;
步骤S64、判断参数名称队列是否为空,是,则返回通用数据类型数据,否,则从参数名称队列中读取一个参数名称,读取输入数据中参数名称对应的值数据,判断值数据是否为通用数据类型或基础数据类型;
步骤S65、判断值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为通用数据类型或基础数据类型;
步骤S66、判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回通用数据类型数据;
步骤S67、判断转换后值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,否,则判断参数名称队列是否还有其他参数名称。
4.根据权利要求1所述的一种解耦的程序开发方法,其特征在于:所述步骤S7进一步具体为:
步骤S71、输入交互数据;
步骤S72、判断交互数据是否为所需的数据类型,是,则从交互数据中读取交互事件类型,否,则从数据管理转换交互数据类型;
步骤S73、判断交互事件类型是否有效,是,则执行交互事件绑定的功能组件处理逻辑传递交互数据,返回功能组件处理逻辑执行结果,判断执行结果是否为通用的数据类型;否,则返回交互事件处理异常;
步骤S74、判断执行结果是否为通用的数据类型,是,则返回通用数据类型执行结果,否,则数据管理转换执行结果类型为通用数据类型。
5.一种解耦的程序开发系统,其特征在于:包括处理器管理模块、创建模块、获取实例模块、实例判断模块、数据管理模块、交互模块和处理器模块,所述处理器管理模块,即处理器管理注册所有程序集中的处理器;所述创建模块,即输入处理器创建数据;所述获取实例模块,即处理器管理获取处理器实例;所述实例判断模块,即判断处理器实例是否有效,是,则返回处理器实例,否,则返回处理器创建异常;所述数据管理模块,即等待输入处理器交互数据,数据管理转换交互数据类型;所述交互模块,即处理器执行交互数据对应交互事件,数据管理转换执行结果类型为通用数据类型;所述处理器模块,即返回交互事件处理结果,判断是否为处理器销毁交互事件,是,则停止,否,则返回等待输入处理器交互数据;所述处理器管理模块进一步具体包括:程序集单元、筛选单元、队列单元、集合单元、提示单元、静态处理器单元、静态注册单元和注册完成单元;所述程序集单元,即获取处理器基础所在程序集,获取当前应用程序的所有程序集;所述筛选单元,即筛选所有程序集中其中与基础程序集有引用关系的程序集,将这些程序集加入一个程序集队列;所述队列单元,即判断程序集队列是否为空,是,则注册完成,否,则从程序集队列中读取一个程序集,获取程序集的所有类类型,筛选其中继承自处理器基础的类类型,将这些类类型加入一个类类型队列;所述集合单元,即判断类类型队列是否为空,是,则注册完成,否,则从类类型队列中读取一个类类型,尝试创建一个类类型的实例,判断是否创建成功,否,则判断类类型队列中是否还有其他类类型,是,则获取实例上的类型字段,判断此类型字段是否已经被处理器集合注册,是,则判断已注册的类类型与此类型是否相同,否,则将此类类型注册到处理器集合中,打印提示信息“重复注册”;所述提示单元,即判断已注册的类类型与此类型是否相同,是,则打印提示信息“重复注册”,否,则打印提示信息“注册类型变更”,将此类类型覆盖处理器集合中的注册;所述静态处理器单元,即判断此类类型是否继承自静态处理器基础,是,则初始化此类类型的实例,判断此类型字段是否已经被静态处理器集合注册;否,则销毁此类类型的实例;所述静态注册单元,即判断此类型字段是否已经被静态处理器集合注册,是,则将此类类型实例覆盖静态处理器集合中的注册,否,则将此类类型实例注册到静态处理器集合中;所述注册完成单元,即判断类类型队列中是否还有其他类类型,否,则判断程序集队列中是否还有其他程序集,是,则从程序集队列中读取一个程序集,否,则注册完成;所述数据管理模块进一步包括:注册单元、目标单元、读取单元、参数名称队列单元、值数据单元、识别单元、通用数据单元和文件路径单元;所述注册单元,即注册参数类型转换规则,输入数据;所述目标单元,即判断输入数据类型是否目标数据类型,是,则返回目标类型数据,否,则判断是否通用数据结构,是,则创建一个目标类型数据,获取目标类型的所有参数名称记录为参数名称队列;否,则判断是否Json数据;所述读取单元,即判断参数名称队列是否为空,是,则返回目标类型数据,否,则从参数名称队列中读取一个参数名称,读取参数数据中参数名称对应的值数据,判断值数据是否为参数名称对应的参数类型;所述参数名称队列单元,即判断值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为参数名称对应的参数类型;所述值数据单元,即判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回目标类型数据;判断转换后值数据是否为参数名称对应的参数类型,是,则设置目标类型数据实例的参数名称对应参数的值为值数据,否,则判断参数名称队列是否还有其他参数名称;所述识别单元,即判断是否Json数据,是,则将Json数据识别为Json实例类型,否,则判断是否Json文件路径;所述通用数据单元,即创建一个通用数据,将Json数据中的基础数据填充到通用参数数据的对应字段值中,判断是否是根节点数据,是,则记录为根节点数据,否,则添加到父节点数据的子数据字段中,判断Json数据是否包含子数据,是,则创建一个通用数据,否,则传递根节点参数数据,创建一个目标类型数据;所述文件路径单元,即判断是否Json文件路径,是,则读取文件中的Json数据,将Json数据识别为Json数据识别为Json实例类型,否,则停止。
6.根据权利要求5所述的一种解耦的程序开发系统,其特征在于:所述获取实例模块进一步包括:输入单元、异常单元和静态处理器实例单元,所述输入单元,即输入处理器类型;所述异常单元,即判断是否包含此类型的处理器,是,则判断处理器是否为静态处理器,否,则返回创建失败异常;所述静态处理器实例单元,即判断处理器是否为静态处理器,是,则返回记录的静态处理器实例,否,则创建一个此类型的处理器实例,返回创建的处理器。
7.根据权利要求5所述的一种解耦的程序开发系统,其特征在于:所述交互模块进一步具体包括:转换单元、输入类型单元、数据类型单元、读取名称单元、记录单元、返回单元和判断转换单元,所述转换单元,即注册参数类型转换规则,输入数据;所述输入类型单元,即判断输入类型,是否基础数据类型,是,则返回基础数据类型数据,停止,否,判断是否通用数据类型;所述数据类型单元,即判断是否通用数据类型,是,则返回通用数据类型数据,否,则创建一个通用数据类型数据,获取输入数据类型的所有参数记录为参数名称队列,判断参数名称队列是否为空;所述读取名称单元,即判断参数名称队列是否为空,是,则返回通用数据类型数据,否,则从参数名称队列中读取一个参数名称,读取输入数据中参数名称对应的值数据,判断值数据是否为通用数据类型或基础数据类型;所述记录单元,即判断值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,判断参数名称队列是否还有其他参数名称;否,则执行注册的参数类型转换规则转换数据类型,判断转换后值数据是否为通用数据类型或基础数据类型;所述返回单元,即判断参数名称队列是否还有其他参数名称,是,则从参数名称队列中读取一个参数名称,否,则返回通用数据类型数据;所述判断转换单元,即判断转换后值数据是否为通用数据类型或基础数据类型,是,则记录通用数据类型数据中参数名称对应字段的值为值数据,否,则判断参数名称队列是否还有其他参数名称。
8.根据权利要求5所述的一种解耦的程序开发系统,其特征在于:所述处理器模块进一步具体包括:交互数据单元、读取交互数据单元、交互事件单元和执行结果单元;所述交互数据单元,即输入交互数据;所述读取交互数据单元,即判断交互数据是否为所需的数据类型,是,则从交互数据中读取交互事件类型,否,则从数据管理转换交互数据类型;所述交互事件单元,即判断交互事件类型是否有效,是,则执行交互事件绑定的功能组件处理逻辑传递交互数据,返回功能组件处理逻辑执行结果,判断执行结果是否为通用的数据类型;否,则返回交互事件处理异常;所述执行结果单元,即判断执行结果是否为通用的数据类型,是,则返回通用数据类型执行结果,否,则数据管理转换执行结果类型为通用数据类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110837004.5A CN113467975B (zh) | 2021-07-23 | 2021-07-23 | 一种解耦的程序开发方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110837004.5A CN113467975B (zh) | 2021-07-23 | 2021-07-23 | 一种解耦的程序开发方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113467975A CN113467975A (zh) | 2021-10-01 |
CN113467975B true CN113467975B (zh) | 2023-09-26 |
Family
ID=77882296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110837004.5A Active CN113467975B (zh) | 2021-07-23 | 2021-07-23 | 一种解耦的程序开发方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467975B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108170A (zh) * | 2018-01-04 | 2018-06-01 | 武汉斗鱼网络科技有限公司 | 一种组件的解耦合方法及系统 |
CN109800061A (zh) * | 2019-02-27 | 2019-05-24 | 上海美亦健健康管理有限公司 | 一种嵌入式软件多实例虚拟化技术 |
CN112114896A (zh) * | 2020-09-04 | 2020-12-22 | 青岛海信网络科技股份有限公司 | 一种插件框架及业务功能扩展的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180074797A1 (en) * | 2016-09-09 | 2018-03-15 | Hewlett Packard Enterprise Development Lp | Transform a data object in a meta model based on a generic type |
-
2021
- 2021-07-23 CN CN202110837004.5A patent/CN113467975B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108170A (zh) * | 2018-01-04 | 2018-06-01 | 武汉斗鱼网络科技有限公司 | 一种组件的解耦合方法及系统 |
CN109800061A (zh) * | 2019-02-27 | 2019-05-24 | 上海美亦健健康管理有限公司 | 一种嵌入式软件多实例虚拟化技术 |
CN112114896A (zh) * | 2020-09-04 | 2020-12-22 | 青岛海信网络科技股份有限公司 | 一种插件框架及业务功能扩展的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113467975A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7627821B2 (en) | Recording/playback tools for UI-based applications | |
US7080350B2 (en) | Method for developing Web applications, development support system and storage medium for storing programs developed according to the method | |
US11726774B2 (en) | Application programming interface for a registry | |
KR101669630B1 (ko) | 특정된 트랜젝션 콘텍스트에서의 소프트웨어의 조건부의 동적 인스트루먼테이션 | |
US8713526B2 (en) | Assigning runtime artifacts to software components | |
US8589884B2 (en) | Method and system for identifying regression test cases for a software | |
US5475843A (en) | System and methods for improved program testing | |
US6182245B1 (en) | Software test case client/server system and method | |
US11210072B2 (en) | System for generating a map illustrating bindings | |
KR101213843B1 (ko) | 원활한 객체 비교 시스템 및 방법 | |
US20170249130A1 (en) | Method for static security enforcement of a dsl | |
US20030200532A1 (en) | System and method for sharing reusable code base | |
CA2508196A1 (en) | Smart ui recording and playback framework | |
JPH07508116A (ja) | イベントの認識および通知を行なう装置およびシステム | |
US20030192027A1 (en) | Software application development | |
EP2284698A1 (en) | Compositional modeling of integrated systems using event-based legacy applications | |
KR20080043345A (ko) | 선언적으로 정의되는 컨트롤 액션 | |
US7383551B2 (en) | Method and system for integrating non-compliant providers of dynamic services into a resource management infrastructure | |
CN110888628A (zh) | 生成控制工具的方法、装置、设备和存储介质 | |
CN113467975B (zh) | 一种解耦的程序开发方法及系统 | |
US6983399B2 (en) | System and method for ascertaining public application program interface coverage | |
CN116955203A (zh) | 服务接口的自动化测试方法 | |
CN113485686B (zh) | 信息系统程序的生成方法、装置、电子设备及存储介质 | |
JP2007265030A (ja) | ジョブ管理装置およびジョブ管理方法 | |
US20050034120A1 (en) | Systems and methods for cooperatively building public file packages |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |