架构设计方法

怎么设计一个能够支持大型iOS工程的架构

iOS应该遵循的五个原则(SOLID):
单一功能原则: 对象功能要单一, 不要在一个对象里添加很多功能
开闭原则: 扩展是开放的, 修改是封闭的
里氏替换原则: 子类对象是可以替代基类对象
接口隔离原则: 接口的用途要单一, 不要在一个接口上根据不同入参实现多个功能
依赖反转原则: 方法应该依赖抽象, 不要依赖实例. iOS开发就是高层业务方法依赖于协议

遵守这五个原则是开发出容易维护和扩展的架构的基础
大型项目的模块粒度过大过小都不合适, 组件可以认为是可组装的、独立的业务单元, 具有高内聚, 低耦合的特性, 是一种比较适中的粒度.iOS组件, 应该是包含UI控件、相关多个小功能的合集, 是一种粒度适中的模块.
采用组件, 对于代码逻辑和模块间的通信方式的改动不大, 完成老代码切换也相对容易. 我们可以先按照物理划分, 将多个相同功能的类移动到同一个文件夹下, 然后做成CocoaPods的包进行管理

组件间的层级关系设置

底层可以是与业务无关的基础组件, 比如网络和存储
中间层一般是通用的业务组件, 比如账号、埋点、支付、购物车等
最上层是迭代业务组件, 更新频率最高

三层结构, 有利于多个团队分别开发维护.

协议式和中间者两种架构

协议式架构设计主要采用的是协议式编程的思路: 在编译层面使用协议定义规范, 实现可在不同地方, 从而达到分布管理和维护组件的目的.这种方式也遵守了依赖反转原则, 是一种很好的面相对象编程的实践
缺点也明显:

  1. 由于协议式编程缺少统一调度层, 导致难于集中管理
  2. 协议式编程接口定义模式过于规范, 从而使得架构的灵活性不够高, 当需要引入一个新的设计模式开发时, 我们就会发现很难融入到当前架构中, 缺乏架构统一性

另一种中间者架构, 采用中间者统一管理, 来控制App的整个生命周期中组件间的调用关系, 同时, iOS对组件接口的设计也需要保持一致性, 方便中间者统一调用
拆分的组件都会依赖于中间者, 但是组件之间就不存在相互依赖的关系了, 由于其他组件都会依赖于这个中间者, 相互间的通信都会通过中间者统一调度, 所以组件间的通信也就更容易管理了

推荐阅读更多精彩内容

  • 前言:当业务需求量和团队规模达到一定程度后,任何一款App都需要考虑架构设计的合理性。 简单架构向大型项目架构演进...
    Idoahc阅读 273评论 0 1
  • 最近学习了阿里资深技术专家李运华的架构设计教程,颇有收获,总结一下。 本文主要介绍架构设计的相关概念,系统复杂度的...
    caison阅读 3,781评论 2 9
  • 架构设计图是一种设计架构、描述架构的核心手段和方法。通过架构视图作为分而治之的手段,使架构师可以分别专注于架构的不...
    皮皮杂谈阅读 497评论 1 3
  • 今天看了一本书是写的是对未来预见性的。光看题目感觉不怎么靠谱,因为关于以后的事影响的因素太多了。我自己没就没太想对...
    朝歌暮语阅读 137评论 0 0
  • 第一次听到这个名字是什么时候已经记不太清了,距离它的上映时间应该已经很久很久了。今天在优酷找电影时,偶然间发现了,...
    superman_297d阅读 81评论 0 0