iOS 架构设计面试题
iOS架构概述
什么是架构 软件架构是指软件系统的高层结构,定义了系统的各个组成部分及其之间的关系。一个好的架构能够帮助我们: 职责分离:将不同的功能模块分开,降低耦合度 可测试性:使代码更容易进行单元测试 可维护性:便于理解和修改代码 可扩展性:方便添加新功能 团队协作:不同开发者可以并行开发不同模块 架构的两个层次 在讨论iOS架构时,需要区分两种不同层次的架构: 类型 关注点 代表模式 页面架构 单个页面内的代码组织 MVC、MVP、MVVM、MVI、TCA、VIPER 工程架构 整个App的模块划分与通信 组件化、插件化、微服务化 两者并不冲突,大型项目通常会同时采用:工程层面使用组件化拆分业务,每个组件内部使用MVVM等页面架构。 页面架构模式 MVC (Model-View-Controller) MVC是Apple官方推荐的架构模式,也是iOS开发中最基础的架构。 flowchart LR Controller <-->|读写| Model Controller -->|更新| View View -.->|用户交互| Controller 特点: Controller作为中介者连接Model和View View和Model不直接通信 在iOS中,ViewController往往承担了过多职责 MVP (Model-View-Presenter) MVP是MVC的演进版本,将业务逻辑从Controller中抽离到Presenter。 flowchart LR Presenter -->|更新| Model Presenter -->|更新| View Model -.->|数据| Presenter View -.->|事件| Presenter View --- ViewController 特点: Presenter持有View的引用(通常是协议) View变得非常"被动",只负责展示 便于单元测试 MVVM (Model-View-ViewModel) MVVM通过数据绑定实现View和ViewModel的同步更新。 flowchart LR ViewModel <-->|读写| Model ViewModel <-->|数据绑定| View 特点: ...