-
1-工厂模式
- 利用抽象汉堡工厂制造汉堡(开放封闭原则用这个案例很好理解,因为普通工厂就是不封闭)!!
-
2-单例模式
- 登录框有且只有一个可以使用单例!!
-
3-适配器模式 - 为被封装对象提供不同的接口
- 有个圆孔,可以放入圆柱体,什么?还可以放入立方体(只要对角线的一半小于等于圆孔半径就可以啦)?
-
4-装饰器模式 - 为对象提供加强的接口,ES7有装饰器语法
- 有些猫在叫之前还要先卖萌,那我们就装饰器模式额外增加这个功能!!
-
5-代理模式 - 为对象提供缩减版的接口,代理嘛,就是有的东西不想让你直接用
- 事件代理: ul下多个li添加点击事件,为什么不交给ul一个元素去处理呢?
- 虚拟代理(对象提供相同的接口): 图片预加载,ProxyImage帮我们调度了预加载相关的工作!!
- 缓存代理: 计算量较大的场景里,我们需要“用空间换时间”,比如我们已经计算过1+2+3,下次再计算的时候可以直接从缓存里取~不用再次计算!!
- 保护代理(对象提供相同的接口): ES6中的Proxy登场,保护女孩的隐私吧!!
-
6-外观模式 - 不符合单一职责原则和开放封闭原则,谨慎使用
- 随机数 - 可以传入一个参数(子系统,0到该数范围随机),可以传入2个参数(a<b, 子系统,a到b范围随机), 也可以这样传2个参数(a>b, 子系统,b到a范围随机),提供一个函数,使用外观模式,实现上述功能
-
7-观察者模式 - 发布订阅模式(这2种模式是有区别的)
- 观察者模式: 产品把前端后端测试拉了个群,然后发了个需求,然后你们懂的~注意这里的产品和前端后端测试是直接联系的!!
- 发布订阅模式: 产品把需求丢到了公司管理项目的平台上,前端后端测试通过平台就知道要干什么了~注意这里产品就不直接和前后端测试沟通,通过第三方平台!!
-
8-迭代器模式 - 就是为了遍历
- 排队等号,下一位,下一位....直到迭代到最后,所有人都进场了!!
-
9-状态模式
- 一台咖啡机的故事
- 美式咖啡态(american):只吐黑咖啡
- 普通拿铁态(latte):黑咖啡加点奶
- 香草拿铁态(vanillaLatte):黑咖啡加点奶再加香草糖浆
- 摩卡咖啡态(mocha):黑咖啡加点奶再加点巧克力
- 一台咖啡机的故事
-
10-原型模式
- 细胞有丝分裂 (还记得生物学知识吗?) 或许是恰当的类比。 有丝分裂会产生一对完全相同的细胞。 原始细胞就是一个原型, 它在复制体的生成过程中起到了推动作用。
-
11-桥接模式
- 我们要做一个有不同颜色也有不同形状的模具
- 先做了这样的设计
- 最大的父类为shape
- 其有2个子类,分别继承它,一个正方形,一个圆形
- 然后我们有2种颜色,比如红色和黄色,那接下去的操作就厉害了
- 红色正方形,黄色正方形继承正方形,红色圆形,黄色圆形继承圆形
- 此时我们在扩展加一种颜色或者加一个形状,代码就变得非常的复杂
- 桥接模式登场
- 形状归形状,颜色归颜色,最后在汇总
-
12-组合模式
- 可以参考文件夹,文件
- 也可以参考树