技术摘要:
本发明提供了一种iOS组件化优化方法、系统及终端,接入Mediator时,通过设置配置类的闭包实现自定义的URL校验及路由规则,设置配置类的缓存最大值控制Target类对象缓存动态管理逻辑;创建Target类时,通过遵循创建的协议以及实现协议中声明的方法,实现充要条件校验。 全部
背景技术:
在应用程序的开发过程中,随着功能的增加,业务逻辑必然变得越来越复杂。为了 避免各个业务之间的相互影响,通常采用组件化的方式进行开发,把复杂系统拆分成多个 组件,分离组件边界和责任,便于独立升级和维护。 现有的Target-Action组件化方案,采用调停者模式,即所有业务组件通过依赖一 个Mediator实现组件间的通信和交互: 1、各模块根据Target_Name的格式创建自己的Target类; 2、Target内根据Action_Name的格式定义自己的Action方法; 3、通过scheme://[target]/[action]?[params]的格式组装URL; 4、Mediator解析URL内的Target和Action,查找缓存内是否有对应的Target对象, 若有则直接使用,无则通过Runtime生成; 5、Mediator向Tartget对象发送Action消息。 在上述组件化方案中,Mediator没有对URL进行校验,且URL的解析使用固定的规 则,无法实现个性化定制的路由规则;Target缓存没有限制及相应的清理方案,容易出现性 能问题。
技术实现要素:
本发明针对现有技术中存在的上述不足,提供了一种iOS组件化优化方法、系统及 终端。 本发明是通过以下技术方案实现的。 根据本发明的一个方面,提供了一种iOS组件化优化方法,包括: S1,各模块根据Target_Name的命名格式创建自己的Target类; S2,Target类内根据Action_Name的命名格式定义及实现自己的Action方法; S3,通过scheme://[target]/[action]?[params]的格式组装URL,其中params表 示Target类对象执行Action方法时所需的参数集合; S4,Mediator根据S3中的格式解析URL,获取Target类名称和Action方法名称及 params参数集合;其中,解析URL的过程,包括: 为Mediator创建一个全局的配置类(MediatorConfiguration),配置类的对象作 为Mediator的属性存在,为配置类声明一个闭包作为属性,实现自定义的URL校验逻辑以及 路由规则,并为配置类声明一个数值类型的属性,设置Target类对象缓存字典的缓存最大 值;同时,在配置类中创建一个协议(MediatorPerformCircleProtocol)的声明,并声明一 个协议方法,方法返回true或false值,实现充要条件校验逻辑; 4 CN 111611024 A 说 明 书 2/7 页 S5,Mediator根据Target类名称在缓存字典中查询是否有对应的Target类对象: 若有,则直接获取; 若无,则根据Target类名称通过Runtime程序创建Target类对象,并将其添加进缓 存字典; S6,Mediator向Tartget类对象发送执行Action方法的命令,并传入params参数集 合。 优选地,所述S4中,配置类使用单例模式设计。 优选地,所述S4中,针对URL解析过程,在解析前检查配置类对象是否实现了声明 的闭包: 若已实现,则执行闭包程序并返回Target类名称和Action方法名称; 若未实现,则执行默认的解析程序获得Target类名称和Action方法名称。 优选地,所述S5中,Target类对象的缓存逻辑采用动态管理逻辑,包括: -若未命中缓存,则根据Target类名称通过Runtime程序创建Target类对象,并将 其添加进缓存字典,同时,将当前时间作为其最近访问时间加入缓存字典以及将当前访问 次数n加入缓存字典; -若命中缓存,则获取Target类对象,同时,将当前时间作为其最近访问时间更新 入缓存字典以及将当前访问次数n 1更新入缓存字典; -加入缓存时检查当前缓存字典的缓存数量是否大于等于配置类对象的缓存最大 值: 若是,则遍历当前缓存字典,查询最近访问时间最久远且访问次数最少的缓存对 象,并将其移出缓存; 若否,则不清理缓存。 优选地,所述S6中,Action方法的执行过程,包括: 在执行之前检查S5中获取到的Target类对象是否遵循了创建的协议,且是否实现 了协议中声明的方法: 若是,则向Target类对象发送执行该协议方法的命令,根据方法执行的返回值判 断是否继续执行Action方法,若返回值为ture则执行,若返回值为false则不执行; 若否,则直接执行Action方法。 根据本发明的另一个方面,提供了一种iOS组件化优化系统,包括: Target类创建模块,所述Target类创建模块用于各模块根据Target_Name的命名 格式创建自己的Target类; Action方法创建模块,所述Action方法创建模块用于Target类内根据Action_ Name的命名格式定义及实现自己的Action方法; URL组装模块,所述URL组装模块定义scheme://[target]/[action]?[params]的 格式,通过scheme://[target]/[action]?[params]的格式组装URL,其中params表示 Target类对象执行Action方法时所需的参数集合; Mediator引入模块,所述Mediator引入模块用于Mediator根据URL组装模块中定 义的格式解析URL,获取Target类名称和Action方法名称及params参数集合;其中,在解析 URL的过程,为Mediator创建一个全局的配置类(MediatorConfiguration),配置类的对象 5 CN 111611024 A 说 明 书 3/7 页 作为Mediator的属性存在,为配置类声明一个闭包作为属性,实现自定义的URL校验逻辑以 及路由规则,并为配置类声明一个数值类型的属性,设置Target类对象缓存字典的缓存最 大值;同时,在配置类中创建一个协议(MediatorPerformCircleProtocol)的声明,并声明 一个协议方法,方法返回true或false值,实现充要条件校验逻辑; Target类对象创建模块,所述Target类对象创建模块用于Mediator根据Target类 名称在缓存字典中查询是否有对应的Target类对象:若有,则直接获取;若无,则根据 Target类名称通过Runtime程序创建Target类对象,并将其添加进缓存字典; Action方法执行模块,所述Action方法执行模块用于Mediator向Tartget类对象 发送执行Action方法的命令,并传入params参数集合。 优选地,所述Mediator引入模块中: 配置类使用单例模式设计;和/或 针对URL解析过程,在解析前检查配置类对象是否实现了声明的闭包:若已实现, 则执行闭包程序并返回Target类名称和Action方法名称;若未实现,则执行默认的解析程 序获得Target类名称和Action方法名称。 优选地,所述Mediator引入模块中,Target类对象的缓存逻辑采用动态管理逻辑。 优选地,所述Action方法执行模块中,Action方法在执行之前检查Mediator引入 模块中获取到的Target类对象是否遵循了创建的协议,且是否实现了协议中声明的方法: 若是,则向Target类对象发送执行该协议方法的命令,根据方法执行的返回值判断是否继 续执行Action方法,若返回值为ture则执行,若返回值为false则不执行;若否,则直接执行 Action方法。 根据本发明的第三个方面,提供了一种终端,包括存储器、处理器及存储在存储器 上并能够在处理器上运行的计算机程序,所述处理器执行所述计算机程序时能够用于执行 上述任一项所述的方法。 根据本发明的第四个方面,提供了另一种终端,包括存储器、处理器及存储在存储 器上并可通过处理器运行上述任一项所述的系统。 优选地,所述系统可用于执行上述任一项所述的方法。 与现有技术相比,本发明具有如下的有益效果: 1、本发明提供的iOS组件化优化方法、系统及终端,接入Mediator时,通过设置配 置类的闭包实现自定义的URL校验及路由规则,设置配置类的缓存最大值控制Target类对 象缓存动态管理逻辑;创建Target类时,通过遵循创建的协议以及实现协议中声明的方法, 实现充要条件校验;因此,本发明可以在无需修改Mediator源码的情况下定制自己的URL校 验逻辑、路由规则、充要条件校验逻辑等功能。 2、本发明提供的iOS组件化优化方法、系统及终端,Mediator会根据设置的缓存上 限动态清理缓存,有效避免出现性能问题。 附图说明 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、 目的和优点将会变得更明显: 图1为本发明实施例所提供的iOS组件化优化方法流程图。 6 CN 111611024 A 说 明 书 4/7 页 图2为本发明实施例所提供的iOS组件化优化系统结构框图。