JavaScript设计模式与开发实践5.8 一等函数对象与策略模式_JavaScript设计模式与开发实践5.8 一等函数对象与策略模式试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > JavaScript设计模式与开发实践 > 5.8 一等函数对象与策略模式

JavaScript设计模式与开发实践——5.8 一等函数对象与策略模式

本章提供的几个策略模式示例,既有模拟传统面向对象语言的版本,也有针对JavaScript语言的特有实现。在以类为中心的传统面向对象语言中,不同的算法或者行为被封装在各个策略类中,Context将请求委托给这些策略对象,这些策略对象会根据请求返回不同的执行结果,这样便能表现出对象的多态性。 Peter Norvig在他的演讲中曾说过:“在函数作为一等对象的语言中,策略模式是隐形的。strategy就是值为函数的变量。”在JavaScript中,除了使用类来封装算法和行为之外,使用函数当然也是一种选择。这些“算法”可以被封装到函数中并且四处传递,也就是我们常说的“高阶函数”。实际上在JavaScript这种将函数作为一等对象的语言里,策略模式已经融入到了语言本身当中,我们经常用高阶函数来封装不同的行为,并且把它传递到另一个函数中。当我们对这些函数发出“调用”的消息时,不同的函数会返回不同的执行结果。在JavaScript中,“函数对象的多态性”来得更加简单。 在前面的学习中,为了清楚地表示这是一个策略模式,我们特意使用了strategies这个名字。如果去掉strategies,我们还能认出这是一个策略模式的实现吗?代码如下: var S = function( salary ){ return salary * 4; }; var A = function( salary ){ return salary * 3; }; var B = function( salary ){ return salary * 2; }; var calculateBonus = function( func, salary ){ return func( salary ); }; calculateBonus( S, 10000 ); // 输出:40000

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《JavaScript设计模式与开发实践》其他试读目录

• 1.1 动态类型语言和鸭子类型
• 1.2 多态
• 1.3 封装
• 1.4 原型模式和基于原型继承的JavaScript对象系统
• 5.1 使用策略模式计算奖金
• 5.2 JavaScript版本的策略模式
• 5.3 多态在策略模式中的体现
• 5.4 使用策略模式实现缓动动画
• 5.5 更广义的“算法”
• 5.6 表单校验
• 5.7 策略模式的优缺点
• 5.8 一等函数对象与策略模式 [当前]
• 5.9 小结
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •