<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
</head>
<script>
/*职责链模式 所有对象依次处理请求,1不能处理传给2,2不能处理传给3....*/
/*场景 打折 100以下不打折, 100-200 9折 200-400 8折*/
/*好处 处理对象分离,降低耦合度*/
function hander(number){
var secHd = new handle9Discount();
var thirHd = new handle8Discount(thirHd);
var hd= new handleDisCount(secHd).disPrice(number);
}
function handleDisCount(nextHander) {
var me = this;
this.nextHander = nextHander;
this.disPrice = function(number) {
if (number < 100) {
alert("已处理,原件出售:" + number);
} else {
me.nextHander.disPrice(number);
}
}
} function handle9Discount(nextHander) {
var me = this;
this.disPrice = function(number) {
if (100 < number && number < 200) {
alert("已处理9折销售" + (number * 0.9))
} else {
me.nextHander.disPrice(number);
}
}
} function handle8Discount(nextHander) {
var me = this;
this.disPrice = function(number) {
if (200 < number && number < 400) {
alert("已处理8折销售" + (number * 0.8))
} else {
alert("无法处理!");
}
}
}
hander(199);
</script> <body>
</body> </html>

  

JS 职责链模式的更多相关文章

  1. Js 职责链模式 简单理解

    js 职责链模式 的简单理解.大叔的代码太高深了,不好理解. function Handler(s) { this.successor = s || null; this.handle = funct ...

  2. js职责链模式

    职责链模式(Chain of Responsiblity),使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为 ...

  3. js 职责链模式简要介绍

    定义: 使多个对象都有机会处理请求,避免发送者与接受者之间的耦合关系,将对象连成一条链,沿着这条链传递请求,直到有一个对象处理它. 如何把对象串联起来?解决方法通常是将另一个对象作为新创建对象的参数, ...

  4. JS常用的设计模式(15)—— 职责链模式

    职责链模式是一个对象A向另一个对象B发起请求,如果B不处理,可以把请求转给C,如果C不处理,又可以把请求转给D.一直到有一个对象愿意处理这个请求为止. 打个比方,客户让老板写个php程序.老板肯定不写 ...

  5. js设计模式(12)---职责链模式

    0.前言 老实讲,看设计模式真得很痛苦,一则阅读过的代码太少:二则从来或者从没意识到使用过这些东西.所以我采用了看书(<js设计模式>)和阅读博客(大叔.alloyteam.聂微东)相结合 ...

  6. JS设计模式(10)职责链模式(重要)

    什么是职责链模式? 重要性:4 星,在项目中能对 if-else 语句进行优化 定义:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到 ...

  7. js设计模式——6.模板方法模式与职责链模式

    js设计模式——6.模板方法模式与职责链模式 职责链模式

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

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

  9. js原生设计模式——13桥接模式(相同业务逻辑抽象化处理的职责链模式)

    桥接模式之多元化类之间的实例化调用实例 <!DOCTYPE html><html lang="en"><head>    <meta ch ...

随机推荐

  1. SQL实现数组的功能

    今天在工作遇到了一个问题,需要往表中添加数量不小而且没有规律的的数据.思考后我想到了使用高级语言中的数组功能解决. 由于SQL Server并没有数组类型,ANSI SQL-92标准中并没有任何有关数 ...

  2. 基于SourceTree 下的 Git Flow 模型

    基于SourceTree 下的 Git Flow 模型 1. sourceTree  是一个开源的git 图形管理工具,可下载mac版本,windows版本 2. Git Flow 是一套使用Git进 ...

  3. openmpi出现Segmentation Fault而终止运算

    欢迎关注我的社交账号: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://gith ...

  4. linux笔记:关机重启命令shutdown,系统运行级别init,退出登录logout

    命令名称:shutdown功能:关机或重启用法:shutdown [选项] [时间]选项参数:-c 取消前一个关机命令-h 关机-r 重启时间格式:now 现在时:分 20:30其他:会正常关闭正在启 ...

  5. 任性,新建对象不用new

    先看最简单的一个例子: window.meng = window.meng || {}; (function () { /** * * @param {Number}width * @param {N ...

  6. wordpress+php+mysql 配置

    下载并解压wordpress之后,在mysql新建一个数据库,命名,例如testDB1,然后在IIS中新建虚拟目录,指向wordress所在的目录,删除wordpress目录下的wp-config.p ...

  7. node 日志管理log4js

    node 日志管理log4js 一.默认的控制台输出 我们使用express框架时,开发模式用node或者supervisor启动nodejs应用时,控制台都是显示如下的日志. GET /css/bo ...

  8. Java--常用类summary(二)

    /* 1:StringBuffer(掌握) (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一个字符串缓冲区类.StringBuffer供 ...

  9. Mysql 修改列的顺序

    alter table 表名 modify 字段名 字段类型 after 字段举例alter table user_info modify user_name varchar(10) after us ...

  10. [转]Java FileInputStream与FileReader的区别

    在解释Java中FileInputStream和FileReader的具体区别之前,我想讲述一下Java中InputStream和Reader的根本差异,以及分别什么时候使用InputStream和R ...