设计模式,一个一个学,等到理解后,揉碎,分散,而后修改现有项目,思考哪些能够用到哪一个设计模式。html
就像张无忌跟张三丰学太极时,所有学会,才是入门;所有忘掉,才算是渐入佳境,距离成神还早着呢。ios
名称 | 分类 | 思想 | 角色 | 示例 |
---|---|---|---|---|
简单工厂模式 | 建立型 | 用个工厂来建立一个要求的相同种类东西 | 具体工厂类、抽象对象类、具体对象类 | Factory生产 圆、方形、椭圆、菱形 的按钮 |
工厂方法模式 | 建立型 | 用个工厂来建立多个要求的相同种类东西 | 具体工厂类、抽象对象类、具体对象类 | Factory生产 圆、方形、椭圆、菱形 的按钮,同时区分暗黑主题、仍是正常模式 |
抽象工厂模式 | 建立型 | 用个工厂来建立多个要求的不相同种类东西 | 抽象工厂、工厂、抽象产品多种、具体产品多种 | Factory生产 圆、方形、椭圆、菱形 的控件,同时区分暗黑主题、仍是正常模式;控件包含按钮,UILabel、UIView、UIImageView |
建造者模式 | 建立型 | 建立一个复杂的东西 | 指挥者、抽象建造者、具体建造者、被建造的对象 | 经过KFC点餐来学习建造者模式 |
单例模式 | 建立型 | 单1、重复使用、频繁使用 | x | XXManager,XXServer,UserDefault |
= | = | = | = | = |
适配器模式 | 结构型 | 把需适配者Adaptee,经过适配器Adapter,适配成能够供目标TargetA、B、C、D使用 ,注意ABCD用的都是Adaptee中的一样的功能,不是组合 | Adaptee、Adapter、Target | 经过撸一个滚动图来学习适配器模式 |
桥接模式 | 结构型 | A想用B可是没办法经过继承组合等形式达成时 | 桥接文件,这里边应该是极其复杂的黑盒子 | apple 提供了使用桥接的思想,一个是原生OC、Swift调用JS、另外一个是Swift调用OC;我能想到的一个示例:咱们用Swift本身去解析Lottie的json文件,而后修改里边的值,让其作动画、改变宽高、颜色 |
装饰器模式 | 结构型 | 动态的给对象增长方法 | x | swift中面向协议编程以及extension都是这种思想 |
外观模式 | 结构型 | 减小不一样类之间的交互,提供统一接口 | 使用者、 外观、子功能 | 在获取资源类中,须要分别调用本地缓存和网络数据,最后把这个组合结果返回;实现隔离减小不一样类之间的交互 |
代理模式 | 结构型 | 先占坑,异步操做 | x | 耗时操做,图片异步加载 |
享元模式 | 结构型 | 缓存系统,缓存在内存中、大量重复使用适合颗粒度较小的东西 | x | x |
= | = | = | = | = |
命令模式 (×) | 行为型 | 把命令抽象成对象,具体的命令对象,给外界提供接口,同时负责命令的执行 | 抽象命令类、具体命令类、调用者、接收者 | 设计模式系列 6-- 命令模式 |
中介者模式 | 行为型 | 用一个中介对象来封装一系列的对象交互,中介者使各对象不须要显式地相互引用,从而使其耦合松散,并且能够独立地改变它们之间的交互 | Mediator: 抽象中介者、ConcreteMediator: 具体中介者、Colleague: 抽象同事类、ConcreteColleague: 具体同事类 | 设计模式系列3--中介者模式 |
观察者模式 | 行为型 | 主动观察到状态改变,从而发生变化,一对多的场景 | 抽象目标 、目标、抽象观察者、观察者 | KVO、Notification |
状态模式 | 行为型 | 对象的行为取决于状态,环境类实际上就是拥有状态的对象,环境类有时候能够充当状态管理器(State Manager)的角色,能够在环境类中对状态进行切换操做 | 环境类、抽象状态类、具体状态类 | 设计模式系列9--状态模式。 |
策略模式 | 行为型 | 定义一系列算法,把它们一个个的封装起来,而且使他们能够相互替换。策略模式使得算法可独立于使用它的客户端而变化 | 环境类、抽象策略类、具体策略类 | X模块中有个分段函数,A、B、C须要X模块支持,可是对X模块中的分段函数有不一样要求,这时,你能够在X模块中写if、else语句、或者switch语句,但这样违反开闭原则,因此,更好的方式是把函数算法封装起来,做为参数传进去。 |
建立型模式在建立什么(What),由谁建立(Who),什么时候建立(When)等方面都为软件设计者提供了尽量大的灵活性。算法
建立型模式隐藏了类的实例的建立细节,经过隐藏对象如何被建立和组合在一块儿达到使整个系统独立的目的。编程
说明:建立对象时,使用到的模式json
关键字:build、构建、构造、建立、工厂模式swift
说明:减小不一样类之间的交互,提供统一接口设计模式
示例:好比获取资源类中,须要调用本地缓存、网络数据,实现隔离减小不一样类之间的交互缓存
代码: https://www.raywenderlich.com/477-design-patterns-on-ios-using-swift-part-1-2#toc-anchor-007markdown
说明:经过相互通讯与协做完成某些复杂功能,一个对象在运行时也将影响到其余对象的运行网络
关键字:观察、通知、MVC、反馈、监控
行为型模式分为类行为型模式和对象行为型模式两种:
本文使用 mdnice 排版