用ES6重写《JavaScript Patterns》中的设计模式

  • A+
所属分类:JavaScript

前言

最近在回顾设计模式方式的知识,重新翻阅了《JavaScript模式》(个人感觉也算是一本小有名气的书了哈)一书,读时总有感触:在即将到来的ES6的大潮下,书中的许多模式的代码可用ES6的语法更为优雅简洁的实现,而另一些模式,则已经被ES6原生支持,如模块模式(99页)。所以自己动手用ES6重新实现了一遍里面的设计模式,算是对其的巩固,也算是与大家一起来研究探讨ES6语法的一些最佳实践。

代码repo地址,欢迎star,欢迎follow。

实现

单例模式

主要改变为使用了class的写法,使对象原型的写法更为清晰,更整洁:

迭代器模式

ES6原生提供的Iterator接口就是为这而生的啊,使用胖箭头函数写匿名函数(还顺带绑定了上下文,舒舒服服):

工厂模式

个人感觉变化比较不大的一个:

装饰者模式

for...of循环,新时代的for (var i = 0 ; i < arr.length ; i++)? :

策略模式

对于传统的键值对,使用Map来代替对象(数组)来组织,感觉带来得是更好的语义和更方便的遍历:

 

外观模式

这个简直没啥好变的。。。:

代理模式

利用extends关键字来获得父类中的方法引用以及和父类相同的类接口:

订阅/发布模式

被Node原生的Events模块所支持,同样结合默认参数,for...of遍历等特性,代码的减少以及可读性的增加都是可观的:

最后

以上所有代码均可通过Babel跑通,90%以上的代码可被当前版本的io.js(v2.0.2)跑通。

weinxin
我的微信公众号
我的微信公众号扫一扫

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: