• 职责链模式的定义:使用多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,
  • 并沿着这条链条传递下去,直到有一个对象处理它为止。
var order500 = function (ordertype, pay, stock) {if (ordertype === 1 && pay == true) {console.log("500元定金,100元优惠券");} else {return 'next';}};var order200 = function (ordertype, pay, stock) {if (ordertype === 2 && pay == true) {console.log("200元定金,50元优惠券");} else {return 'next';}};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.setNext = function (succ) {this.successor = succ;};Chain.prototype.passRequest = function () {var ret = this.fn.apply(this, arguments);if (ret === 'next') {return this.successor && this.successor.passRequest.apply(this.successor, arguments);}return ret;};var chainorder500 = new Chain(order500);var chainorder200 = new Chain(order200);var chainorderNormal = new Chain(orderNormal);chainorder500.setNext(chainorder200);chainorder200.setNext(chainorderNormal);chainorder500.passRequest(1, true, 500);chainorder500.passRequest(2, true, 500);chainorder500.passRequest(3, true, 500);chainorder500.passRequest(1, false, 0);

  • 通过职责链模式,我们可以灵活的添加,移除修改链中的节点顺序。
  • 下面我们用AOP实现职责链
 Function.prototype.after = function (fn) {var self = this;return function () {var ret = self.apply(this, arguments);if (ret === 'next') {return fn.apply(this, arguments);}return ret;}};var order = order500.after(order200).after(orderNormal);order(1, true, 500);order(2, true, 500);order(1, false, 500);

转载于:https://www.cnblogs.com/meiyh/p/6510233.html

JS模式--职责链模式相关推荐

  1. 《设计模式详解》行为型模式 - 职责链模式

    职责链模式 6.4 职责链模式 6.4.1 概述 6.4.2 结构 6.4.3 案例实现 6.4.4 优缺点 6.4.5 JavaWeb 源码 - FilterChain 完整的笔记目录:<设计 ...

  2. 责任链模式(职责链模式)(Chain of Responsibility Pattern)

    学校OA 系统的采购审批项目:需求是 采购员采购教学器材 如果金额小于等于5000, 由教学主任审批(0<=x<=5000) 如果金额小于等于10000, 由院长审批(5000<x& ...

  3. 5.js模式-职责链模式

    1. 职责链模式 将对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止. var chain = function(fn){ this.fn = fn; this.successor = ...

  4. Java设计模式(备忘录模式-解释器模式-状态模式-策略模式-职责链模式)

    Java设计模式Ⅶ 1.备忘录模式 1.1 备忘录模式概述 1.2 代码理解 2.解释器模式 2.1 解释器模式概述 3.状态模式 3.1 状态模式概述 3.2 代码理解 4.策略模式 4.1 策略模 ...

  5. 15、设计模式-行为型模式-职责链模式

    职责链模式 很多情况下,在一个软件系统中可以处理某个请求的对象不止一个,例如SCM系统中的采购 单审批,主任.副董事长.董事长和董事会都可以处理采购单,他们可以构成一条处理采购 单的链式结构,采购单沿 ...

  6. Python设计模式-职责链模式

    Python设计模式-职责链模式 代码基于3.5.2,代码如下; #coding:utf-8 #职责链模式class Handler():def __init__(self):self.success ...

  7. 趣谈设计模式 | 职责链模式(ChainOfResposibility):请求的转发处理

    文章目录 案例:企业信息处理 职责链模式 总结 完整代码与文档 案例:企业信息处理 对于一个企业来说,每天难免的要收到大量的信息,有求职者发送过来的简历.其他公司的商务合作信息.又或者是和一些企业或客 ...

  8. 请求的链式处理——职责链模式

    本文转载自 :http://blog.csdn.net/lovelion/article/details/7420891 "一对二","过","过&q ...

  9. C#设计模式学习笔记:(20)职责链模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8109100.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第八个模式--职 ...

最新文章

  1. j2recover----最强大的jfs2文件恢复工具
  2. PHP机器学习库php-ml的简单测试和使用
  3. 如何设计一个 A/B test?
  4. 使用getline读入
  5. 用Cucumber JVM编写BDD测试
  6. ssh,scp带密码操作
  7. Java中的return this
  8. 【ES11(2020)】String 扩展 String.prototype.matchAll()
  9. Leetcode每日一题:172.factorial-trailing-zeroes(阶乘后的0)
  10. cookie 和session
  11. 网络模块封装-axio
  12. Cut the Cake!题解
  13. 梦回山海推广码jn0010 梦回山海推广码
  14. 01-前端工程化概述
  15. 【C语言】||(或) (且)
  16. IPv4如何向IPv6过渡?IPv6改造方案有哪些?
  17. python高级工程师证书_Amireux
  18. 花了1个月时间,把Python库全部整理出来了,覆盖所有,建议收藏
  19. c刊计算机领域见刊快的期刊,见刊快的核心期刊_见刊快的核心期刊_好投的医学核心期刊...
  20. 【微机原理大作业】从0开始设计RTC电子钟系统(三)(含完整源码和仿真图及下载地址)

热门文章

  1. php smarty 时间,smarty的时间格式-详细 | 时刻需
  2. java util下的并发包_jdk并发包下:使用java.util.concurrent.Executor线程池
  3. 什么叫组网_5G中,啥是独立组网(SA)与非独立组网(NSA)
  4. bitmap画文字 居中_【每日问答29】一键居中CAD表格中的文字
  5. 2020 年国内 Serverless 用户规模:阿里云占比第一,达 66%
  6. 涂鸦智能 dubbo-go 亿级流量的实践与探索
  7. nohup 不生成日志_js页面触发chargeRequest事件和Nginx获取日志信息
  8. mysql5.7.20非安装版_mysql5.7.20\5.7.21免安装版安装配置教程
  9. linux哪些端口占用了,如何查看某个端口被谁占用(Linux如何查询哪些端口被占用)...
  10. vc 获取月份的天数_「青少年编程」课程:输入年份与月份,得到该月有多少天...