首页 / 设计模式 / 理解js设计模式之策略模式
理解js设计模式之策略模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了理解js设计模式之策略模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1483字,纯文字阅读大概需要3分钟。
内容图文
策略模式的定义:定义一系列的算法,然后根据实际情况去调用
一个小插曲:最近在项目的过程中接手了一个比较复杂的需求,由于是旧的项目用新的框架重构,所以能够看见以前的代码,吸取下前人代码的精华,复用一些可用的代码,免得自己写半天。。当然这篇的主题是策略模式,不会离题,因为当我完成了Version 1 后,项目里面大量的if-else 字段的验证都放在一个函数里面,而且不同字段有些还会相互影响,导致代码很长很乱大概有几十行的if else ,丝毫没有条理;这个时候,需要去重构这个原本的底层验证函数,那么就用上了策略模式
给个策略模式放光彩的场景:验证一行数据的每一个字段的正确性,每一行的数据字段假设有6个,验证这6个字段的正确性,返回结果
然后:假设6个字段分别是A B C D E F;
如果不用策略模式,代码如下:
function check(data){ //data={A: ,B: ,C: ......} if(data.A==???){ }else{ } if(data.B==???){ }else{ } if(data.C==???){ }else{ } . . . }
这是糟糕的方式,那么进入策略模式的解决方案:
首先,策略模式意味着你要有策略,什么是策略?就是每一种情况对应的解决方案 ;
将函数内部的每个字段的方法抽离出来,这些一个个的判断方法就是策略!
策略模式还有一个条件是什么?需要用到策略的地方能够访问到你的策略,抽离成函数的表现就是调用其他函数
如何组织策略?抽离成一个一个的函数,然后调用,返回结果,但是这样子函数又显得非常的多,难以维护,js对象字面量提供了非常优雅的解决方案
var myStrategy={ A:function(value){ //判断 return result }, B:function(value){ //判断 return result }, C:function(value){ //判断 return result }, D:function(value){ //判断 return result }, E:function(value){ //判断 return result }, F:function(value){ //判断 return result } }
这样子,就建立了一个策略对象,你可以通过新建一个js文件,保存页面所需要的各种策略,和底层的验证函数,需要用到的地方再去引用这个js文件这样应该是比较好的方式
那么如何使用策略?
function checke(data){ var strategy=require(‘myStrategy‘),//获得策略对象 result={}; for(var key in data){ //假设key=A 那么,下面执行的就是: result[key]=strategy[key](data[key]); //result.A=strategy.A( data.A ) } return result; }
超级6的有没有,解释下上面的行为
1,获得策略对象
2,遍历数据对象,拿到每一次的 key ,也就是ABCDEF这些,
3,然后去策略里面找对应的策略方法,执行拿到返回结果
4,将结果赋给本地的result对象,里面的key,ABCDEF,保存着对应的字段错误信息,返回这个result对象
原文:http://www.cnblogs.com/llauser/p/7382592.html
内容总结
以上是互联网集市为您收集整理的理解js设计模式之策略模式全部内容,希望文章能够帮你解决理解js设计模式之策略模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。