iOS进阶 - 组件化架构设计
Posted 极客学伟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS进阶 - 组件化架构设计相关的知识,希望对你有一定的参考价值。
ios进阶 - 组件化设计探究
组件化架构的设计需要解决三个主要问题:
- 模块粒度如何划分
- 如何分层
- 多团队如何协作
模块粒度如何划分
模块粒度划分需遵循五个原则:
- 单一功能原则:对象功能要单一,不要在一个对象里添加很多功能
- 开闭原则:扩展是开放的,修改是封闭的
- 里式替换原则:子类对象时可以替代基类对象的
- 接口隔离原则:接口的用途要单一,不要在一个接口上根据不同入参实现多个功能
- 依赖反转原则:方法应该依赖抽象,不要依赖实例。iOS 开发就是高层业务方法依赖于协议。
同时,遵守这五个原则是开发出容易维护和扩展的架构的基础
组件是可组装的、独立的业务单元,具有高内聚,低耦合的特性,是一种比较适中的粒度。iOS组件,应该是包含UI控件、相关多个小功能的合集,是一种粒度适中的模块。
如何分层
对于组件间分层,对多不能超过三层。
- 底层可以是业务无关的基础组件,比如网络和存储等
- 中间层一般是通用的业务组件,比如账号、埋点、支付、购物车等
- 最上层是迭代的业务组件,更新频率最高
这样三层结构设计有利于多个团队分别维护开发。
多团队如何协作
首先需要有一个专门的基建团队,负责业务无关的基础组件功能和业务相关通用业务组件的开发
然后每个业务需要有一个专门的团队来负责开发,业务可以按照功能耦合度来划分,耦合度高的业务可以划分为单独的业务团队。
基建团队人员应该是流动的,从业务团队里来,再回到业务团队中去,业务团队和基建团队的边界不应该非常明显。
组件化设计的两种主要方案
协议式 和 中间者 两种架构
协议式架构主要采用的是协议式编程的思路:在编译层面使用协议定义规范,实现可在不同地方,从而达到分布管理和维护组件的目的。
缺点是:
- 由于协议式编程缺少统一调度层,导致难于集中管理
- 协议式编程接口定义模式过于规范,从而使得架构的灵活性不够高
中间者模式,采用中间者统一管理的方式来控制App的整个生命周期中组件间的调用关系。
拆分的组件都依赖于中间者,但是组件之间不存在相互依赖的关系了。由于其他组件都会依赖于这个中间者,相互间的通信都会通过中间者统一调度,所以组件间的通信也就更容易管理了。
其中比较好的中间者路由是 CTMediator
极客时间-iOS开发高手课 学习笔记
以上是关于iOS进阶 - 组件化架构设计的主要内容,如果未能解决你的问题,请参考以下文章