读 戴铭--项目架构设计

当我们的项目和业务较小时,我们可以使用MVC、MVP、MVVM等设计模式进行开发,而当需求量和规模达到一定程度后,就需要考虑项目的架构设计合理性了

首先要考虑的是: 模块粒度怎么划分? 如何分层? 多团队如何协作?

模块粒度划分的标准或者原则:

  • Single responsibility principle 单一功能原则:对象功能要单一,不要在一个对象里添加很多功能。
  • Open–closed principle 开闭原则:扩展是开放的,修改是封闭的。
  • Liskov substitution principle 里氏替换原则:子类对象是可以替代基类对象的。
  • Interface segregation principle 接口隔离原则:接口的用途要单一,不要在一个接口上根据不同入参数实现不同功能
  • Dependency inversion principle 依赖反转原则:方法应该依赖抽象,不要依赖实例。iOS 开发的高层业务方法依赖于协议

组件化设计,需要对iOS的组件解耦,其并不是要求每个组件间都没有耦合,组件之间也可以有上下层依赖关系,但是层数不要过多,最多不超过3层
例如:

1. 底层是业务无关的基础组件
2. 中间是通用业务组件
3. 最上层是迭代业务组件,更新频率高

当然也不是要把所有功能都做成组件,只有业务功能等成熟时,有时间有机会时,进行改造

解耦的精髓在于业务逻辑能够独立出来,并不是形式上的解除编译上的耦合,我们更需要关心的是在划分组件时做到同层级解耦合,上下层依赖清晰

在协议式架构和中间者式架构中,我们选择中间者式的架构,可以更好的管控和扩展