当前位置:主页 > javascript教程 > JS设计模式之策略模式概念与用法分析

JS策略模式概念与实例用法

发布:2020-02-09 12:11:30 147


给大家整理一篇javascript相关的编程文章,网友蒲弘致根据主题投稿了本篇教程内容,涉及到JS、设计模式、策略模式、JS设计模式之策略模式概念与用法分析相关内容,已被525网友关注,涉猎到的知识点内容可以在下方电子书获得。

JS设计模式之策略模式概念与用法分析

本文实例讲述了JS设计模式之策略模式概念与用法。分享给大家供大家参考,具体如下:

策略模式的概念引用:

在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。

如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来进行选择。

这两种实现方法我们都可以称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码;更换查找算法,也需要修改客户端调用代码。

在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。如果我们将这些策略包含在客户端,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大量可供选择的算法时问题将变得更加严重.

举例说明:

一、出行旅游:我们可以有几个策略可以考虑:可以骑自行车,汽车,做火车,飞机。每个策略都可以得到相同的结果,但是它们使用了不同的资源。

选择策略的依据是费用,时间,使用工具还有每种方式的方便程度 。

二、在一个购物商城,在五一做了一个活动,所以图书类商品根据购买的金额做出以下折扣策略

1、购买满199元,打9折
2、购买满399元,打8折
3、购买满599元以上,打7折;

function BookStrategy() {
 this.calcPrice = function( price ) {
 console.log("未打折 = " + price);
 }
}
function BookCalc9Strategy() {
 this.calcPrice = function( price ) {
 console.log("原价是:"+ price +";打9折后:" + (price * 0.9));
 }
}
function BookCalc8Strategy() {
 this.calcPrice = function( price ) {
 console.log("原价是:"+ price +";打8折后:" + (price * 0.8));
 }
}
function BookCalc7Strategy() {
 this.calcPrice = function( price ) {
 console.log("原价是:"+ price +";打7折后:" + (price * 0.7));
 }
}
function PriceCalc( _strategy ) {
 this.strategy = _strategy;
 this.getPrice = function( price ) {
 return this.strategy.calcPrice( price );
 }
}
function Client() {
 var price = 100;
 var priceCalc = null;
 if ( 199 <= price && price < 399 ) {
 priceCalc = new PriceCalc(new BookCalc9Strategy());
 } else if ( 399 <= price && price < 599 ) {
 priceCalc = new PriceCalc(new BookCalc8Strategy());
 } else if ( 599 <= price ) {
 priceCalc = new PriceCalc(new BookCalc7Strategy());
 } else {
 priceCalc = new PriceCalc(new BookStrategy());
 }
 priceCalc.getPrice(price);
}
Client();

运行结果:

JS设计模式之策略模式概念与用法分析

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


参考资料

相关文章

  • js获取浏览器的各种属性的实例方法

    发布:2020-03-06

    本篇文章主要介绍了js获取浏览器各种属性的相关资料。具有很好的参考价值。下面跟着小编一起来看下吧


  • 关于sails框架的学习指南

    发布:2020-02-04

    本文从最基础的sails框架知识开始讲起,通过示例给我们展示了sails框架的各个方面,非常的不错,推荐给小伙伴们


  • js实现华丽的九九乘法表效果

    js实现华丽的九九乘法表效果

    发布:2022-06-17

    给大家整理了关于javascript的教程,本文主要介绍了js实现华丽的九九乘法表效果的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧


  • JS实现的DOM插入节点实例代码

    发布:2020-01-21

    这篇文章主要介绍了JS实现的DOM插入节点操作,结合实例形式分析了javascript针对页面dom元素动态操作相关实现技巧,需要的朋友可以参考下


  • NodeJs实现定时任务的实例方法

    发布:2019-07-30

    本篇文章主要介绍了NodeJs实现定时任务的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • JS根据Unix时间戳显示发布时间是多久前【项目实测】

    JS根据Unix时间戳显示发布时间是多久前【项目实测】

    发布:2023-02-28

    给网友朋友们带来一篇关于JS的教程,小编最近在实现这样的需求类似微信朋友圈显示发布时间为距离当前时间多久之前这样的功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧


  • 深入理解JS设计模式之访问者模式定义与用法

    发布:2020-01-29

    这篇文章主要介绍了JS设计模式之访问者模式定义与用法,结合实例形式分析了javascript设计模式中访问者模式的概念、功能、应用场景及使用方法,需要的朋友可以参考下


  • JS实现给数组对象排序的实例代码

    发布:2020-07-19

    这篇文章主要介绍了JS实现给数组对象排序的方法,结合实例形式分析了javascript数组对象排序相关实现方法与操作注意事项,需要的朋友可以参考下


网友讨论