疑问
设计模式在前端中的具体体现?一直以来都觉得设计模式在前端中的体现非常的主观模糊、难以运用。
- 答:实际的应用和我所理解的应该差不多,文中提到的代理模式有点意思在特定场景也许有用。设计模式的体现还是在第三方工具库中会更明显。业务代码中没必要强行引入这个概念,加重开发负担、降低可读性、关键只有一个人会用。
摘要&心得
更多详见前端与设计模式
- 答:实际的应用和我所理解的应该差不多,文中提到的代理模式有点意思在特定场景也许有用。设计模式的体现还是在第三方工具库中会更明显。业务代码中没必要强行引入这个概念,加重开发负担、降低可读性、关键只有一个人会用。
代理模式
- 根据调用频率来进行截流的函数代理
- 针对计算成本比较高的函数,我们可以通过对函数进行代理,来缓存函数对应参数的计算返回结果。
const getCacheProxy = (fn, cache = new Map()) =>// 代理函数 fnnew Proxy(fn, {// 代理 fn 的调用方法apply(target, context, args) {// 将调用参数字符串化,方便作为存储 keyconst argsString = args.join(' ')// 判断是否存在缓存,如果存在直接返回缓存值if (cache.has(argsString)) {return cache.get(argsString)}// 执行 fn 方法,得到计算结果const result = fn(...args)// 存储相关计算结果cache.set(argsString, result)return result}})
装饰者模式
- 在不改变原对象的基础上,对其对象进行包装和拓展,使原对象能够应对更加复杂的需求。
- 这有点像高阶函数(有点像?就用的很微妙,所以还是很主观的)
