本发明涉及路由通信领域,尤其是一种基于中介者模式的ios路由通信方法。
背景技术:
1、随着移动应用的快速发展,ios应用程序的规模和复杂性不断增加。一个工程里塞下所有的业务代码变得极其臃肿,编译速度极速下降,代码提交冲突和编译错误日益增多。臃肿的工程影响着团队中的每个成员的开发效率,也给代码质量管控带来了不小的挑战。因此采用组件化的ios应用程序工程已成为一种普遍的开发模式。组件化开发将业务功能拆分成不同的独立模块以组件的形式接入工程,不同的组件可以相对独立地开发和维护。组件化后,在业务上各个组件是相对独立,但是组件免不了需要进行通信或者交互。在现有的ios开发中,不同页面、模块之间的沟通需要引用应页面或者模块,这种方式进行通信会导致组件之间的耦合性增加。而且,利用ios提供的基于观察模式的通知中心进行通信,这种通信方式虽然不会让组件耦合度增加,但是这种方式需要手动注册和注销观察者,不易于维护,容易出现内存泄漏和重复注册的问题。
2、另一方面,为了降低开发成本,提升开发效率,增加代码复用性,每个工程或多或少需要接入一些跨平台技术,如h5、reactnative、flutter等等。以往项目中,处理跨平台交互通常需要针对不同的业务需求,定义不同的交互方法,不够灵活且没有统一的规范。不同的跨度技术提供不同的交互方法,如果接入多种跨平台方案,还需要维护套不同的硬代码。
3、现有很多路由组件只能提供单一的页面跳转功能,无法实现其他的通信,不具备拓展性。大多路由组件通过字符串注册和调用,在开发过程中使用字符串作为标识很容易出现拼写错误或者被修改,而编辑器又不会有任何提示。还有些组件利用ios中的protocol类型作为标识,修改和拼写有了编辑器的提示,但是与跨应用或者跨平台技术组件的通信效率不高。
技术实现思路
1、有鉴于此,本发明实施例提供一种基于中介者模式的ios路由通信方法,用于提高组件间的通信效率。
2、本发明实施例的一方面提供了一种基于中介者模式的ios路由通信方法,包括:
3、在应用组件注册时,获取所述应用组件定义的对外路由protocol;
4、若protocol和所述应用组件对应的路由类型遵守路由组件中的路由协议,则将protocol和所述路由类型传入所述路由组件中的路由表,以对所述应用组件进行注册;
5、在调用所述应用组件时,根据protocol和所述路由组件中的路由表初始化一个路由对象;
6、利用所述路由组件中的路由调度者根据所述路由对象调用所述应用组件传入的方法,并返回调用结果。
7、可选地,所述若protocol和所述应用组件对应的路由类型遵守路由组件中的路由协议,则将protocol和所述路由类型传入所述路由组件中的路由表,以对所述应用组件进行注册,包括:
8、若所述应用组件在所述路由组件中遵循protocol和实现所有protocol中定义的方法,则将protocol和所述路由类型传入所述路由组件中的路由表,以对所述应用组件进行注册。
9、可选地,所述ios路由通信方法还包括:
10、若所述应用组件在所述路由组件中不遵循protocol和实现所有protocol中定义的方法,则返回注册错误。
11、可选地,所述在调用所述应用组件时,根据protocol和所述路由组件中的路由表初始化一个路由对象,包括:
12、在调用所述应用组件时,根据protocol在所述路由表中查找对应的所述路由类型;
13、若查找到对应的所述路由类型,则通过类初始化一个所述路由类型对应的路由对象。
14、可选地,所述ios路由通信方法还包括:
15、在调用所述应用组件时,若根据protocol在所述路由表中未查找到对应的所述路由类型,则返回调用错误。
16、可选地,所述利用所述路由组件中的路由调度者根据所述路由对象调用所述应用组件传入的方法,包括:
17、利用所述路由组件中的路由调度者解析所述应用组件传递的url,所述url包括用户自定义的协议头、路由对象的名称、路由组件所需调用的方法以及调用参数;
18、若所述用户自定义的协议头遵守路由组件中的路由协议,则根据所述路由对象的名称和所述调用参数,调用所述路由组件所需调用的方法。
19、可选地,所述返回调用结果,包括:
20、返回所述应用组件与其它组件之间的页面切换结果、数据交互结果或数据回调结果。
21、本发明实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前面的方法。
22、与现有技术相比,本发明至少包括以下有益效果:
23、本发明将路由组件作为中介者,路由组件仅负责调度,具体通信由应用组件决定,各应用组件解耦的同时兼备拓展性。应用组件通信选用protocol作为key存储和查找路由,有编译器提示,轻量化,具备高拓展性,并提高了组件间的通信效率和交互效率。
1.一种基于中介者模式的ios路由通信方法,其特征在于,包括:
2.根据权利要求1所述的一种基于中介者模式的ios路由通信方法,其特征在于,所述若protocol和所述应用组件对应的路由类型遵守路由组件中的路由协议,则将protocol和所述路由类型传入所述路由组件中的路由表,以对所述应用组件进行注册,包括:
3.根据权利要求2所述的一种基于中介者模式的ios路由通信方法,其特征在于,所述ios路由通信方法还包括:
4.根据权利要求1所述的一种基于中介者模式的ios路由通信方法,其特征在于,所述在调用所述应用组件时,根据protocol和所述路由组件中的路由表初始化一个路由对象,包括:
5.根据权利要求4所述的一种基于中介者模式的ios路由通信方法,其特征在于,所述ios路由通信方法还包括:
6.根据权利要求1所述的一种基于中介者模式的ios路由通信方法,其特征在于,所述利用所述路由组件中的路由调度者根据所述路由对象调用所述应用组件传入的方法,包括:
7.根据权利要求1至6任一项所述的一种基于中介者模式的ios路由通信方法,其特征在于,所述返回调用结果,包括: