听飞狐聊JavaScript设计模式系列15

  • A+
所属分类:JavaScript

 

本回内容介绍

上一回,聊了聊链式编程,模拟了jQuery和underscore.js,并写了一个遍历多维数组的函数。

介一回,聊策略模式(Strategy),策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

1. 策略模式

先看一个计算奖金的例子,这个在网上的策略模式例子里曝光率很高,如下:

策略对象封装了具体的算法,然后一个方法接收传参,委托给策略对象进行计算。这个例子很容易理解,很直观。

2. 策略模式之人在囧途

大家都看过电影《人在囧途》吧,两人先是乘飞机,然后乘火车,最后乘汽车,转换为代码如下:

测试部分代码如下:

这个例子是根据一个java的策略模式例子改的JS版本,好玩儿吧,又玩儿了一次大卫哥,以后一看到策略模式就会想起“卫囧”。

3. 策略模式之validate

有了上面两个例子的基础,对策略模式有了更深的理解,那介一个例子就来模拟validate,代码如下:
html界面部分

 

策略对象部分:

下面是校验类的代码,如下:

测试部分代码,如下:

这里就是模拟validator的简版代码了,我没有写太多方法,大家可以扩充。这个例子更贴近实际开发,相信对策略模式会有更深的理解。
听飞狐聊JavaScript设计模式系列15
装个逼,刚策略模式聊到了人在囧途,突然就想起了《唐人街探案》,其中肖央演的坤泰确实很出彩~~

这一回聊的策略模式,模拟了下validator,难度适中~

下面的内容是一道题,记得系列03里的某客面试题吗,还有一道题是数字转中文, 例:123转一百二十三~

JS数字转中文

中国古代表示数量的单位依次是:个、十、百、千、万、亿、兆、京、垓、秭...这里的单位我就直接copy了。

JS数字转中文进阶版

这里就已经可以实现数字转中文了,继续写带有单位的计算,上面的例子基础上,再做每四位一组,遍历单位转换,再加一个判断零的情况,接着敲代码吧^_^。

这就是完整的代码了,我没有做更多的测试,只能算是粗略的完成了,确实是简单粗暴的敲完了代码,其实再完美一点,在判断零的时候还可以计算,整体代码还可以优化算法,更简单,性能更优化,抛砖引玉,这个就给大家继续完善了,优化了这个例子的童鞋,也分享分享呗,可以直接评论,多碰撞碰撞,大家一起进步呗,嘿嘿~~

这一回,主要策略模式,模拟了validate,做了一道题数字转中文的题。

下一回,聊一聊JS的享元模式。

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

发表评论

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