js职责链模式
来源:互联网 发布:java核心技术 pdf 编辑:程序博客网 时间:2024/04/28 19:16
<h1>灵活可拆分的职责链节点案例</h1> <script> var order500 = function( orderType, pay, stock ){ if( orderType === 1 && pay === true ){ console.log( "500元定金预购,得到100元优惠券" ); }else{ return "nextSuccessor"; } }; var order200 = function( orderType, pay, stock ){ if( orderType === 2 && pay === true ){ console.log( "200元定金预购,得到50元优惠券" ); }else{ return "nextSuccessor" } }; var orderNormal = function( orderType, pay, stock ){ if( stock > 0 ){ console.log( "普通购买,无优惠券 " ); }else{ console.log( "手机库存不足" ); } }; var Chain = function( fn ){ this.fn = fn; this.successor = null; }; Chain.prototype.setNextSuccessor = function( successor ){ return this.successor = successor; }; Chain.prototype.passRequest = function(){ var res = this.fn.apply( this, arguments ); if( res === "nextSuccessor" ){ return this.successor.passRequest.apply( this.successor, arguments ); } return res; }; //现在我们吧3个订单函数分别包装成职责链的节点 var chainOrder500 = new Chain( order500 ); var chainOrder200 = new Chain( order200 ); var chainOrderNormal = new Chain( orderNormal ); //然后指定节点在指责链的顺序 chainOrder500.setNextSuccessor( chainOrder200 ); chainOrder200.setNextSuccessor( chainOrderNormal ); //最后传递请求 chainOrder500.passRequest( 1, false, 0 ); //通过改进,我们可以自由灵活地增加、移除和修改链接中的节点, //假如某天网站运营人员又提出支持300远的定金购买,那我们就在该链中增加一个节点即可 </script>
0 0
- JS 职责链模式
- js职责链模式
- js之职责链模式
- JS设计模式之职责链模式
- 职责链设计模式
- 职责链模式
- 职责链模式
- 职责链模式
- ChainOfResponsibility(职责链)模式
- 职责链模式ChainOfResponsibility
- 职责链模式
- 职责链模式 ResponsibilityChainPattern
- 【设计模式】职责链
- 职责链模式
- java职责链模式
- 职责链模式
- 职责链模式
- 职责链模式(python)
- 正太分布的前世今生
- oracle 12c演示模式正确打开姿势
- HTTP协议详解
- 剪刀石头布
- Android 解决界面底部弹出dialog被虚拟按键遮挡一部分的问题
- js职责链模式
- VS 2015 + Qt 5.8 环境配置
- FileChannel 与 ByteBuffer 操作文件
- 微信面试题-获取元素的最终background-color
- Nand Flash analyse 后续
- 数据结构之直接插入排序
- HUST 1584 摆放餐桌【计算几何】
- Laravel批量写入数据详解
- linux中ldconfig(动态链接库管理命令)的使用介绍