首页 > 移动平台 > 详细

iOS组件化详解

时间:2020-08-31 20:50:28      阅读:66      评论:0      收藏:0      [点我收藏+]

 前言:首先我们应该知道什么是组件化?组件化的优势?组件化方案?通过本文章都能一一找到答案

一、组件化?

组件化就是将APP拆分成各个组件(模块),同时解除这些模块的耦合,然后 通过主工程将项目所需要的组件组合起来。

二、组件优缺点?

组件化优点:

1.组件可独立运行,提高代码复用性

2.组件化后项目的代码结构更加清晰,追踪问题、修复bug

3.不同业务组件相互独立

组件化缺点:

1.增加代码的冗余,组件化颗粒度越细,中间代码越多

2.增加项目复杂度

三、组件化方案?

想要达到每个组件之间的相对低耦合,就是断掉横向依赖,引入中间件将依赖下沉至中间件。

技术分享图片

四、组件中间件设计方案?

方案:

一、URLRoute+Procotol

1.需要注册组件

2.调用方通过URL调用服务方页面,URL和服务方页面的关系通过路由表(map)映射,路由表需要维护

3.调用方通过Procotol调用页面类服务组件(传递复杂对象)

二、CTMediator(Target-Action runtime(NSClassFromString))

1.不需要注册组件,通过runtime(NSClassFromString)查找

2.参数传递统一用dictionary

备注:

Target-action实现

/*

其内部使用Runtime调用,传递三个参数

*当前需要调用类名

*当前需要调用类方法名

*需要传的参数

*/

- (id)performTarget:(NSString *)targetName action:(NSString *)actionName params:(NSDictionary *)params shouldCacheTarget:(BOOL)shouldCacheTarget

 

URLRoute实现

//注册路由

[[Router sharedInstance] registerURL:@"app://home/detail" with:^UIViewController *{ return [HomeDetailViewController new]; }];

//通过url获取

UIViewController *vc = [[Router sharedInstance] openURL:@"app://home/detail"]

 

五、URLRoute&CTMediator选择?

1.URLRoute动态性更好,适用于页面跳转业务较多的场景

2.CTMediator核心代码少,更适合业务较杂,调用关系相对简单

 

iOS组件化详解

原文:https://www.cnblogs.com/CYyinchen/p/13591059.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!