iOS-项目组件化探索

在我们日常开发中我们会发现,随着项目往前推进,模块越来越多,会出现一个.m文件中导入一大堆的头文件这种情况。这个就是我们经常说的耦合太高的问题,此时项目维护就会变得麻烦了。那么为了降低各个模块之间的耦合,我们就可以通过组件化方案来架构我们的项目。

在组件化的开发模式中,我们需要给我们的项目进行分层。那么通常我们会分成三层 :基础模块、通用模块、业务模块。

对应模块的开发集成顺序大致是从下到上的,即基础模块 -> 通用模块 -> 业务模块。而它们的依赖关系则是从上往下的,业务依赖通用通用依赖基础

集成顺序
`基础模块` -->   `通用模块` -->  `业务模块`

依赖顺序
`基础模块` <--  `通用模块` <--  `业务模块`

基础模块和通用模块

基础模块和通用模块这里,很多人也直接合并成一个层,但是我个人更倾向于分层两层。

基础模块:基础模块主要是封装一些与业务不相关的模块,像分类、工具类等。这里要明确的就是不和业务相关,在不同的模块中或者是在其他项目中都是可以直接不修改拿来使用的。

通用模块通用模块我们也可以理解为通用业务模块,这一层主要体现通用,其次体现面向业务。像UIButton、NSDictionary和业务挂钩了的分类,我们就放在通用模块。而像一些与业务完全不挂钩的分类就放在基础模块。

业务模块

其实组件化除去技术层面的东西之外,业务模块的设计是最难的,必须着眼于整个项目,将项目如何划分,既要考虑到对目前分层的合理性,又要考虑以后的拓展性。因为如果一个模块如果频繁的进行改动,就要合理的设计前端的接口,与其他模块的交互等等。

1、通常项目模块间的关系大致如下图,就是我们在进行组件化之前的项目,给个层次中间的关系,这里写的模块可以理解是类之间的关系

  • 各个模块都或多或少有关系,模块间进行通讯(即类之间的方法调用),需要进行#import导入头文件,是一种比较强的耦合关系
  • 模块间进行组件化首先要解决的问题就是模块间之间的耦合关系,只要耦合关系越低,模块才能越独立
  • 结局的基本的思路是建立通讯中间层(这里使用的是CTMediator),各个模块之间通过中间层进行中专,模块之间不直接进行联系。如下图

但是这种中间层的设计,就会引入一些新的问题:

(1) 各个模块于中间层的强耦合,他需要导入所以模块,才能使模块进行通讯。

(2) 造成这样中间层就是比较庞大。比如A模块只想和C模块通讯,这时中间层只需要设计为包含AC即可,但是目前中间拥有ABCD所有的代码,这里不合理

(3) 一个思路 就是讲中间层在进行分层,这样可能就会有一个排列组合的关系,AB AC AD BC BD CD ,能不能对中间层进行优化,我们在下一遍文章再来看下。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值