设计模式 - 命令模式&中介者模式&组合模式~AppDelegate 解耦
前言 Hi Coder,我是 CoderStar! 今天主要给大家分享的内容是三种设计模式 (命令模式、中介者模式以及组合模式) 及其它们在 AppDelegate 解耦场景下的应用,特别是组合模式,沉淀出相应的轮子分享给大家。 同时也给大家说下后面关于设计模式系列的文章计划,因为设计模式相关文章会结合我们开发中实际上会遇到的场景进行整理,所以发文可能不连续,希望大家理解,我会将大部分设计模式的代码示例全部整理到 DesignPatternsDemo 仓库中,形式为 Playground,所以代码示例中可能会有一些手动调用系统函数的情况出现。 同时给大家推荐一个学习设计模式的好网站 –深入设计模式,文章中涉及的部分 UML 图也来自该网站。 场景 AppDelegate 是应用程序的根对象,即唯一代理,可以认为是每个 iOS 项目的核心。 其提供应用程序生命周期事件的暴露; 其确保应用程序与系统以及其他应用程序正确的交互; 其通常承担很多职责,这使得很难进行更改,扩展和测试。 随着业务的迭代升级,不断增加新的功能和业务,AppDelegate 中的代码量也不断增长,致使其 Massive。AppDelegate 中常见的业务会包括: 生命周期中的事件处理及传播; 管理 UI 堆栈配置:选择初始视图控制器,执行根视图控制器转换; 管理后台任务; 管理通知; 三方库初始化; 管理设备方向; 设置 UIAppearance; … 并且因为 AppDelegate 会影响整个 APP,所以在面对复杂的 AppDelegate 时,我们就会小心翼翼,生怕自己自己的改动影响到其他的功能。所以说 AppDelegate 的简洁和清晰对于健康的 iOS 架构来说是至关重要的。 下面我们利用上述三种设计模式实现对 AppDelegate 的解耦,使其优雅。 命令模式 命令模式(Command) 是一种 行为设计模式,它可将请求转换为一个包含与请求相关的所有信息的独立对象。该转换让你能根据不同的请求将方法参数化、延迟请求执行或将其放入队列中,且能实现可撤销操作。 UML <!DOCTYPE html> Responsive Image ...