设计模式——享元模式
在程序设计中,有时候需要生产大量细粒度的对象来表示数据,如果能发现这些对象中除了部分特殊参数外其他开销基本相同,就可以通过享元模式把特殊参数移动到外面,在创建对象时再传进来,大幅度减少需要实例化的对象数量。这是一种优化性能的设计模式。
在程序设计中,有时候需要生产大量细粒度的对象来表示数据,如果能发现这些对象中除了部分特殊参数外其他开销基本相同,就可以通过享元模式把特殊参数移动到外面,在创建对象时再传进来,大幅度减少需要实例化的对象数量。这是一种优化性能的设计模式。
最近需要在工作项目中使用RxJS,稍微查了查资料感觉还是个很有意思的东西,于是从今天开始集中主要精力学学RxJS啦。由于其核心思想和常规的JS写法有较大不同,在逐步分析其概念之前先谈谈相关背景知识。
模板方法模式是一种基于继承的设计模式。事件万物总有相似之处,提取出相似点作为父类,提取出不同点作为子类来继承父类,就得到了有着相同特点的不同对象。然后将方法骨架延迟到子类中,这个方法就是针对这一类相同特点对象的模板方法。这种设计模式很好的体现了泛化的思想。
俗话说无规矩不成方圆。在现实生活中,无论什么团体都会有自己的一套规章制度来管理,就像军队一样,即使人数众多也能在集体活动时保持统一与协调。在程序设计中也是如此,有时候我们可能需要针对一个子元素相似的结构操作数据,这时候组合模式就派上用场了。
在web开发中不可避免的会接触到路由的概念,例如Vue配套的技术栈里就有vue-router来管理前端路由的控制。那么路由究竟是什么呢?
观察者模式又叫发布/订阅模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主对象。当主对象的状态发生变化时就会通知所有观察者对象进行更新。
在JS中对象拷贝的场景比较常见。由于对象属性中可能存在引用类型,一般分为浅拷贝和深拷贝两种。这里总结一下常见思路,可以根据具体需求复杂度进一步完善。
迭代器模式是一种很常见的模式,大部分语言都有了内置的迭代器实现,JS也不例外,从Array.prototype.forEach到ES6新增的专用迭代器都属于迭代器模式。下面我们来探究一下迭代器模式的封装方法。
状态模式主要用来满足某个对象内部存在不同表现的需求场景。可以说是一种针对相似功能的类的进一步的封装。当这个状态对象接受到请求时,再将请求委托到内部类,根据内部定义好的实现逻辑返回结果到状态对象再表现出来。
HTML5新增了一组与本地文件进行交互的API。这组API增强了前端操作文件数据的能力,以前通常要借助后端实现的一些功能,例如断点续传,图片预览等现在也可以在前端轻松的完成了。