請求,一系列請求處理物件組成的鍊錶,請求在鍊錶中傳遞的過程中,選擇合適的處理物件去處理請求
var chain = function
(fn)
chain.prototype = ,
passrequest: function
() return ret
},next:function
() }
// 建立職責鏈 處理請求節點
var chain0 = new chain(function
(type) else
})var chain1 = new chain(function
(type) else
})var chain2 = new chain(function
(type) else
})// 連線 節點
chain0.setnextsuccessor(chain1).setnextsuccessor(chain2)
// 發出請求
chain0.passrequest(1) // 輸出: deal request in chain:1
上面是請求在職責鏈間傳遞是同步的,如果需要非同步,可以手動傳遞請求給職責鏈下乙個節點
var chain3 =
new chain(function(type) else , 2000)
}})var chain4 =
new chain(function(type) else
})// 連線 節點
chain0.setnextsuccessor(chain1).setnextsuccessor(chain2).setnextsuccessor(chain3).setnextsuccessor(chain4)
// 發出請求
chain0.passrequest(4) //deal request in chain:4
js 職責鏈模式簡要介紹
定義 使多個物件都有機會處理請求,避免傳送者與接受者之間的耦合關係,將物件連成一條鏈,沿著這條鏈傳遞請求,直到有乙個物件處理它。如何把物件串聯起來?解決方法通常是將另乙個物件作為新建立物件的引數,稱為繼承者。如何把請求傳遞下去?通常在其原型上定義同名請求方法,在此方法裡呼叫繼承者。極簡示例如下 fu...
職責鏈模式
1.職責鏈 namespace dutychainpattern 用來處理請求 public abstract void transmitrequest int request 班主任 職責鏈上的乙個節點,在裡面進行判斷,看能否處理請求,不能則將請求轉移 public class classadvi...
職責鏈模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...