日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JS模式--职责链模式

發布時間:2025/3/20 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS模式--职责链模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 職責鏈模式的定義:使用多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關系,將這些對象連成一條鏈,
  • 并沿著這條鏈條傳遞下去,直到有一個對象處理它為止。
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模式--职责链模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。