<!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. Gevent的长轮询实现方法详解

    长轮询 1.浏览网页时,浏览器会传HTTP 请求到服务器,服务器会根据请求将网页的内容传给浏览器,但是在很多的情况下,使用者会需要看到最新的即时性资讯,例如观看股票市场行情,而在以前只能靠着重新载入网 ...

  2. (转)TCP、UDP、IP协议

    原文地址:http://blog.chinaunix.net/uid-26833883-id-3627644.html   互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如 ...

  3. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio »迁移

    Migrations¶ 4 of 4 people found this helpful The Contoso University sample web application demonstra ...

  4. 能源项目xml文件 -- app-datasource.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  5. jQuery笔记一

    陆续更新中..... 1,创建标签的时候可以提前写好,以后用clone()方法克隆即可. 如: var div=$("<div></div>"); var ...

  6. js控制手机号码中间用星号代替

    $("#tel").html($("#tel").substring(0,3)+"****"+$("#tel").sub ...

  7. HTML5自定义属性对象Dataset简介

    一.html5 自定义属性介绍 我之前翻译的“你必须知道的28个HTML5特征.窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设 ...

  8. python 基础学习(元组,if,for)

    1.tuple对象 tuple 元组 有序的列表 tuple一旦创建不能修改 a.定义元组t=('a','b','c')空元素的tuple t=()()既表示tuple 也表示运算符的优先级 所以定义 ...

  9. OUT函数及其熟练使用,split的用法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. Objective-C:Foundation框架-常用类-NSValue

    NSNumber是NSValue的子类,前者只能包装数字,后者可以包装任意值.NSArray.NSDictionary只能存储OC对象,不能存储结构体.因此,如果想要在NSArray.NSDictio ...