JS設計模式 責任鏈模式

2022-09-20 08:27:11 字數 1226 閱讀 3727

看以下**

function distributeprizes(paymethod, ispay, prizescount)  else  else 

}//充值兩百

} else if (paymethod === 200) else else

}//不充值

} else else

}}

各種巢狀的if-else if-else讓人讀起來很累。不難想象的是引數通過if-elseif-else不斷的判斷從而向下傳遞,那麼可以採用責任鏈的模式(或者說鍊錶)來進行優化,從而滿足開放封閉原則(對拓展開放修改封閉)和單一職責原則

function pay500(paymethod, ispay, prizescount)  else 

}function pay200(paymethod, ispay, prizescount) else

}function nextype(paymethod, ispay, prizescount) else

}function testpaychain(fn)

testpaychain.prototype.distributeprizes = function()

var head = new testpaychain(function(paymethod, ispay, prizescount))

var chain500 = new testpaychain(pay500)

var chain200 = new testpaychain(pay200)

var chainnextype = new testpaychain(nextype)

head.nextchain = chain500

chain500.nextchain = chain200

chain200.nextchain = chainnextype

head.distributeprizes(500,true,500)

head.distributeprizes(200,true,500)

head.distributeprizes(500,false,500)

head.distributeprizes(200,false,0)

1.當鏈條很長的時候存在效能問題

2.當存在非同步函式的時候即無法採用該方法

設計模式 責任鏈模式

定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...

設計模式 責任鏈模式

責任鏈可以使得系統在不影響客戶端的前提下動態的安排責任鏈和分配責任。責任鏈模式中包含的角色有抽象處理者,具體處理者以及請求的傳送者。責任鏈可以是一條直線,乙個環鏈甚至乙個樹結構。它使得每乙個具體的訊息處理者都有可能處理訊息。抽象的請求處理者 author wly public abstract cl...

設計模式 責任鏈模式

責任鏈模式 chain ofresponsibility pattern 基本概念 責任鏈,顧名思義,是指乙個負責相應請求的行為鏈。首先要理解的是乙個鏈,然後通過這個鏈來管理個行為。什麼時候會用到責任鏈 對於乙個請求,沒有特別指明由誰處理或沒有指明如何處理。此時可以使用責任鏈的形式,用過將各種處理行...