一种基于面向对象开发的可扩展外挂方法及装置制造方法及图纸

技术编号:36882946 阅读:10 留言:0更新日期:2023-03-15 21:18
本发明专利技术公开一种基于面向对象开发的可扩展外挂方法及装置,其中,该方法包括:基于对象的状态管理类用于主应用状态管理,实现Store类;基于对象的状态管理类Plugin类用于插件管理,实现Plugin类;基于对象的pluginControl类用于管理Plugin注册及主应用状态同步,实现pluginControl;在主应用加载外挂的applyPlugin勾子方法,实现applyPlugin;实现usePlugin的勾子方法。该方法及装置将功能与应用拆分,大大减少代码间的耦合度,对需要的功能只需在应用初始化时加载对应外挂即可,外挂实例相互不干扰,可以通过对象继承扩展更多方法,外挂与视图可通过usePlugin建立访问,简化了在视图层书写大量业务逻辑。化了在视图层书写大量业务逻辑。化了在视图层书写大量业务逻辑。

【技术实现步骤摘要】
一种基于面向对象开发的可扩展外挂方法及装置


[0001]本专利技术涉及插件领域,尤其是一种基于面向对象开发的可扩展外挂方法及装置。

技术介绍

[0002]在计划开发一款APP应用的时候,随着需求增加,代码也会滚雪球式增长,当项目积累一定程度,我们的APP变得异常难维护,其中包括、代码冗余、代码耦合过高、爆炸式增长的模块及常量维护等。
[0003]当前在前端开发领域,我们惯用函数式编程应对我们的需求开发,但当需求不断递增,项目越来越庞大时,这是暴露的弊端也显露出来,代码结构混乱、冗余的常量、数量庞大的模块结构等,此时我们迫切需要一种方式来对代码瘦身,需要一种约束使代码结构更层次分明。

技术实现思路

[0004]为解决现有技术存在的上述问题,本专利技术提供一种基于面向对象开发的可扩展外挂方法及装置,通过添加插件形式集成,插件管理主应用状态,管理实现自身功能,插件集成只需在应用初始化进行挂载即可在某个时候进行卸载。
[0005]为实现上述目的,本专利技术采用下述技术方案:
[0006]在本专利技术一实施例中,提出了一种基于面向对象开发的可扩展外挂方法,该方法包括:
[0007]S01、基于对象的状态管理类用于主应用状态管理,实现Store类;
[0008]S02、基于对象的状态管理类Plugin类用于插件管理,实现Plugin类;
[0009]S03、基于对象的pluginControl类用于管理Plugin注册及主应用状态同步,实现pluginControl
[0010]S04、在主应用加载外挂的applyPlugin勾子方法,实现applyPlugin;
[0011]S05、实现usePlugin的勾子方法。
[0012]进一步地,所述S01包括:
[0013]S011、通过观察者模式创建Store类;
[0014]S012、Store接收的参数分别为初始化状态与状态处理函数,状态处理函数用于返回发起响应的数据处理操作;
[0015]S013、Store暴露发起响应、得到当前所有状态、监听、移除监听方法。
[0016]进一步地,所述S02包括:
[0017]S021、继承自Store;
[0018]S022、新增私有属性pluginName用于插件标识;
[0019]S023、提供notify方法,告知usePlugin勾子程序更新状态。
[0020]进一步地,所述S03包括:
[0021]S031、创建PluginControl类,接收2个参数,参数为主应用实例与状态处理函数;
[0022]S032、申明pluginMap变量Map类型,用于存储插件名称;
[0023]S033、构建setPlugins方法传入插件类,判断为不重复插件并创建实例存入pluginMap变量;
[0024]S034、构建getPluginByName方法,根据名称返回插件实例;
[0025]S035、构建reducer方法,根据传入type类型,查找所有插件状态并返回结果。
[0026]进一步地,所述S04包括:
[0027]S041、applyPlugin接收1个参数,为Plugin类数组;
[0028]S042、在applyPlugin中,通过store.getState得到主应用状态;
[0029]S043、通过遍历外挂数组,将主应用状态替换外挂应用状态实现数据同步。
[0030]进一步地,所述S05包括:
[0031]S051、usePlugin接收组件名参数;
[0032]S052、通过PluginControl对象getPluginByName方法得到插件实例;
[0033]S053、当插件实例存在时,调用插件subscribe方法建立监听,并通知组件重绘。
[0034]在本专利技术一实施例中,还提出了一种基于面向对象开发的可扩展外挂装置,该装置包括:
[0035]Store模块、基于对象的状态管理类用于主应用状态管理,实现Store类;
[0036]Plugin模块、基于对象的状态管理类Plugin类用于插件管理,实现Plugin类;
[0037]pluginControl模块、基于对象的pluginControl类用于管理Plugin注册及主应用状态同步,实现pluginControl;
[0038]applyPlugin模块、在主应用加载外挂的applyPlugin勾子方法,实现applyPlugin;
[0039]usePlugin模块、实现usePlugin的勾子方法。
[0040]进一步地,所述Store模块包括:
[0041]创建模块、通过观察者模式创建Store类;
[0042]Store参数接收模块、Store接收的参数分别为初始化状态与状态处理函数,状态处理函数用于返回发起响应的数据处理操作;
[0043]暴露模块、Store暴露发起响应、得到当前所有状态、监听、移除监听方法。
[0044]进一步地,所述Plugin模块包括:
[0045]继承模块、继承自Store;
[0046]pluginName模块、新增私有属性pluginName用于插件标识;
[0047]notify方法模块、提供notify方法,告知usePlugin勾子程序更新状态。
[0048]进一步地,所述pluginControl模块包括:
[0049]PluginControl参数接收模块、创建PluginControl类,接收2个参数,参数为主应用实例与状态处理函数;
[0050]pluginMap模块、申明pluginMap变量Map类型,用于存储插件名称;
[0051]setPlugins模块、构建setPlugins方法传入插件类,判断为不重复插件并创建实例存入pluginMap变量;
[0052]getPluginByName模块、构建getPluginByName方法,根据名称返回插件实例;
[0053]reducer模块、构建reducer方法,根据传入type类型,查找所有插件状态并返回结
果。
[0054]进一步地,所述applyPlugin模块包括:
[0055]applyPlugin参数接收模块、applyPlugin接收1个参数,为Plugin类数组;
[0056]主应用状态获取模块、在applyPlugin中,通过store.getState得到主应用状态;
[0057]数据同步模块、通过遍历外挂数组,将主应用状态替换外挂应用状态实现数据同步。
[0058]进一步地,所述usePlugin模块包括:
[0059]usePlugin参数接收模块、usePlugin接收组件名参数;
[006本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于面向对象开发的可扩展外挂方法,其特征在于,该方法包括:S01、基于对象的状态管理类用于主应用状态管理,实现Store类;S02、基于对象的状态管理类Plugin类用于插件管理,实现Plugin类;S03、基于对象的pluginControl类用于管理Plugin注册及主应用状态同步,实现pluginControl;S04、在主应用加载外挂的applyPlugin勾子方法,实现applyPlugin;S05、实现usePlugin的勾子方法。2.根据权利要求1所述的基于面向对象开发的可扩展外挂方法,其特征在于,所述S01包括:S011、通过观察者模式创建Store类;S012、Store接收的参数分别为初始化状态与状态处理函数,状态处理函数用于返回发起响应的数据处理操作;S013、Store暴露发起响应、得到当前所有状态、监听、移除监听方法。3.根据权利要求1所述的基于面向对象开发的可扩展外挂方法,其特征在于,所述S02包括:S021、继承自Store;S022、新增私有属性pluginName用于插件标识;S023、提供notify方法,告知usePlugin勾子程序更新状态。4.根据权利要求1所述的基于面向对象开发的可扩展外挂方法,其特征在于,所述S03包括:S031、创建PluginControl类,接收2个参数,参数为主应用实例与状态处理函数;S032、申明pluginMap变量Map类型,用于存储插件名称;S033、构建setPlugins方法传入插件类,判断为不重复插件并创建实例存入pluginMap变量;S034、构建getPluginByName方法,根据名称返回插件实例;S035、构建reducer方法,根据传入type类型,查找所有插件状态并返回结果。5.根据权利要求1所述的基于面向对象开发的可扩展外挂方法,其特征在于,所述S04包括:S041、applyPlugin接收1个参数,为Plugin类数组;S042、在applyPlugin中,通过store.getState得到主应用状态;S043、通过遍历外挂数组,将主应用状态替换外挂应用状态实现数据同步。6.根据权利要求1所述的基于面向对象开发的可扩展外挂方法,其特征在于,所述S05包括:S051、usePlugin接收组件名参数;S052、通过PluginControl对象getPluginByName方法得到插件实例;S053、当插件实例存在时,调用插件subscribe方法建立监听,并通知组件重绘。7.一种基于面向对象开发的可扩展外挂装置,其特征在于,该装置包括:Store模块、基于对象的状态管理类用于主应用状态管理,实现Store类;Plugin模块、基于对象的状态管理类Plugin类用于插件管理,实现Plugin类;
pluginControl模块、基于对象的pluginControl类用于管理Plugin注册及主应用状态同步,实现pluginCont...

【专利技术属性】
技术研发人员:袁晓渝向麒麟
申请(专利权)人:中盈优创资讯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1