1策略模式
???在程序设计中,我们也常常遇到类似的情况,要实现某一个功能有多种方案可以选择。比如 一个压缩文件的程序,既可以选择 zip 算法,也可以选择 gzip 算法。(2018/07/04)
策略模式的定义是: ????定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
在项目开发过程中,我们经常需要定义一系列的算法,用来计算不同类型数据的总和 ,? 比如说
某天,小红去商场购物 ,买了一双陆游鞋 a元 ,一件T恤 b 元, 一套面膜套装? c 元 , 一个苹果手机d 元,
和一个GoPro 价格 f 元, 所以 这就可以实用策略模式,分为? 衣服? ,化妆品 ,电子商品 分别求的分类总和.
代码示例
var calculateBonus = function( performanceLevel, salary ){
????????if ( performanceLevel === 'S' ){
????????????return salary * 4;
????????}
????????if ( performanceLevel === 'A' ){
????????????return salary * 3;
????????}
????????if ( performanceLevel === 'B' ){????????
????????????return salary * 2;
????????}
};
calculateBonus( 'B', 20000 ); // 输出:40000
calculateBonus( 'S', 6000 ); // 输出:24000
????????一个基于策略模式的程序至少由两部分组成。第一个部分是一组策略类,策略类封装了具体
的算法,并负责具体的计算过程。 第二个部分是环境类 Context,Context 接受客户的请求,随后
把请求委托给某一个策略类
????????这句话如果说的简单点,就是说必须有具体的分类标准,和 具体的应用场景.这里 也可以简单的
说明类的多态.
2.迭代模式
? ? ? ? ? ? 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象?
的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使
不关心对象的内部构造,也可以按顺序访问其中的每个元素.
迭代器模式定义: 循环访问 聚合对象 的各个元素
比如 :?这篇文章中说到的5种常见的遍历对象的方法, 以及比如 jQuery 中的$.each 函数
原理就是: 其中回调函数中的? 参数 i 为当前索引,n 为当前元素.
代码示例如下
$.each( [1, 2, 3], function( i, n ){
console.log( '当前下标为: '+ i );
console.log( '当前值为:' + n );
});
迭代器模式是一种相对简单的模式,简单到很多时候我们都不认为它是一种设计模式。