首先解决三个问题:
- 模块粒度应该如何划分?
- 如何分层?
- 多团队如何协作?
颗粒度划分
对于 iOS面向对象编程开发模式来说,我们应该遵循以下五个原则,即solid原则
- 单一功能原则:对象功能要单一, 不要在一个对象里添加很多功能
- 开闭原则:扩展是开放的,修改是封闭的
- 里氏替换原则:子类对象是可以替代基类对象的
- 接口隔离原则:接口的用途要单一,不要在一个接口上根据不同的入参实现多个功能
- 依赖反转原则:方法应该依赖抽象,不要依赖实例。iOS开发就是高层业务方法依赖于协议。
分层
- 底层可以是与业务无关的基础组件,比如网络、存储等
- 中间层一般是通用业务组件,比如账号、埋点、支付、购物车等
- 最上层是迭代业务组件,跟新频率最高
组件化架构
一般分为协议式和中间者两种架构设计方案。
协议式架构设计主要采用的是协议式编程的思路:在编译层面使用协议定义规范,实现可在不同地方,从而达到分布管理和维护组件的目的。这种方式也遵循了依赖反转原则,
缺点:1.缺少统一调度层,难于集中管理;2.定义模式过于规范,从而使得架构的灵活性不够高。
中间者架构,采用中间者统一管理的方式,来控制App的整个生命周期中间件间的调用关系。同时,组件接口的设计也需要保持一致性,方便中间者统一调用。
解耦的精髓在于业务逻辑能够独立出来。所以,再考虑架构设计时,更多的还是需要在功能逻辑和组件划分上做到同级解耦,上下层依赖清晰,这样的结构才能使得上层组件易插拔,下层组件更稳固。