iOS组件化开发之路

556 阅读3分钟

1.进行组件化开发的原因

接手公司的项目时候,已经是2.0尾声版本,由于开始的时候,使用的mvc设计模式开发的的项目.公司的目标是向钉钉看齐(哈哈哈),所以按照的目标,目前这种单工程架构就不足以满足架构需求了.

举个大家比较熟悉的例子,就拿淘宝来说,淘宝在13年开启的“All in 无线”战略中,就将阿里系大多数业务都加入到手机淘宝中,使客户端出现了业务的爆发。在这种情况下,单工程架构则已经远远不能满足现有业务需求了。所以在这种情况下,淘宝在13年开启了插件化架构的重构,后来在14年迎来了手机淘宝有史以来最大规模的重构,将其彻底重构为组件化架构。

在一个项目越来越大,开发人员越来越多的情况下,项目会遇到很多问题。 业务模块间划分不清晰,模块之间耦合度很大,非常难维护。 所有模块代码都编写在一个项目中,测试某个模块或功能,需要编译运行整个项目。

  • 业务模块间划分不清晰,模块之间耦合度很大,非常难维护。
  • 所有模块代码都编写在一个项目中,测试某个模块或功能,需要编译运行整个项目。

耦合严重的工程
为了解决上面的问题,可以考虑加一个中间层来协调模块间的调用,所有的模块间的调用都会经过中间层中转。(注意看两张图的箭头方向)

添加中间层
但是发现增加这个中间层后,耦合还是存在的。中间层对被调用模块存在耦合,其他模块也需要耦合中间层才能发起调用。这样还是存在之前的相互耦合的问题,而且本质上比之前更麻烦了。

所以应该做的是,只让其他模块对中间层产生耦合关系,中间层不对其他模块发生耦合。 对于这个问题,可以采用组件化的架构,将每个模块作为一个组件。并且建立一个主项目,这个主项目负责集成所有组件。这样带来的好处是很多的:

  • 业务划分更佳清晰,新人接手更佳容易,可以按组件分配开发任务。
  • 项目可维护性更强,提高开发效率。
  • 更好排查问题,某个组件出现问题,直接对组件进行处理。
  • 开发测试过程中,可以只编译自己那部分代码,不需要编译整个项目代码。

组件化结构
进行组件化开发后,可以把每个组件当做一个独立的app,每个组件甚至可以采取不同的架构,例如分别使用MVVM、MVC、MVCS,MVP等架构。

是几年前写的,忘了发布了,今天登陆账号,顺带发布一下,后续要是有时间,我再更新,哈哈哈。