日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS模式--职责链模式

發布時間:2025/3/20 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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模式--职责链模式的全部內容,希望文章能夠幫你解決所遇到的問題。

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