好久之前看过AlloyTeam
写的javascript设计模式与开发实践。当时似懂非懂,看的很仔细,但感觉没有对应的工作经验,无法深刻体会到具体的精髓,并不知其所以然。看了一段时间源码后,算是理解了一部分设计模式的精髓。此番回顾一下,重读一遍该书,以加深理解
1. 单例模式
文件只有单一类,所以方法全部聚集在原型链,目前最最常用的,不多说
代理实现单例模式,缓存代理
|
2. 策略模式
将具有多态(策略)或者状态发生变化的情况下,将策略转化为对象属性(策略)进行统一管理,同时可以减少很多if,优雅。
|
应用场景,后台返回状态码、动画曲线库、表单验证规则库
3. 代理模式
应用:
- 图片预加载,在加载图片前先用loading.gif来占位。
- jquery事件代理绑定模式,在一个table的所有td下绑定事件
|
4. 迭代器模式
jquery中的迭代器
5. 观察者模式(发布-订阅)
目前浏览器的各种addEventLisener事件,都是观察者模式的应用
sub-pub模式定义了对象1对多的依赖关系
React中单向事件流,其中就有观察者模式,其中一个state发生变化,订阅state的components都会引起变化
自定义的发布-订阅模式的话:通用实现如下
6. 装饰者模式
AOP装饰函数 _.before
和 _.after
7. 适配器模式
主要处理接口不匹配的问题。
用于统一变换接口最方便了。目的就是将一种类型的格式通过函数处理转变另一种格式,例子如下
|
想当初自己就是苦逼的一个一个改,包括后续获取数据的接口可能都要变化。这样效率极低,而且很容易出错。
更轻便的方法就是写一个数据格式的转换器
|