iOS知识复习笔记(15)---iOS常用设计模式
作者:
焦下客 | 来源:发表于
2023-01-19 08:14 被阅读0次
名称 |
分类 |
思想 |
角色 |
示例 |
简单工厂模式 |
创建型 |
用个工厂来创建一个要求的相同种类东西 |
具体工厂类、抽象对象类、具体对象类 |
Factory生产 圆、方形、椭圆、菱形 的按钮 |
工厂方法模式 |
创建型 |
用个工厂来创建多个要求的相同种类东西 |
具体工厂类、抽象对象类、具体对象类 |
Factory生产 圆、方形、椭圆、菱形 的按钮,同时区分暗黑主题、还是正常模式 |
抽象工厂模式 |
创建型 |
用个工厂来创建多个要求的不相同种类东西 |
抽象工厂、工厂、抽象产品多种、具体产品多种 |
Factory生产 圆、方形、椭圆、菱形 的控件,同时区分暗黑主题、还是正常模式;控件包含按钮,UILabel、UIView、UIImageView |
建造者模式 |
创建型 |
创建一个复杂的东西 |
指挥者、抽象建造者、具体建造者、被建造的对象 |
通过KFC点餐来学习建造者模式 |
单例模式 |
创建型 |
单一、重复使用、频繁使用 |
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语句,但这样违反开闭原则,所以,更好的方式是把函数算法封装起来,作为参数传进去。 |
本文标题:iOS知识复习笔记(15)---iOS常用设计模式
本文链接:https://www.haomeiwen.com/subject/hoxthdtx.html
网友评论