請人清除了我與這些模式在我腦海中的混亂:在什麼情況下,命令鏈設計模式適用?
- 指揮鏈
- 責任鏈
我見過很多網站,其中兩個是相同的(與責任鏈相同的命令鏈的例子)以及其他不在的網站。
這是我瞭解每個:
CHAIN命令:
一類我們稱之爲CommandChain,以持有物業「命令」,這是類的實例的一個列表,它實現相同的界面。假設他們都必須實現onCommand(命令,參數)。
CommandChain有addCommand()方法來註冊它內的新命令,runCommand()它接受一個命令名及其參數。這個方法應該遍歷命令列表,直到其中的一個響應,執行相應的操作併發送正常。責任
正如我在一些網站已經看到了
鏈,這將是幾乎相同的,與此不同: 而不是一類存儲命令列表循環的通過,每個命令實例都會存儲對下一個命令實例的引用。
那麼,這種差異是否足夠大以考慮兩種設計模式的不同?
它們在哪些實際情況下適用?
他們有相同的行爲畢竟,即使第一次一個存儲在主類的屬性的處理程序,並在第二屆每個處理器包含參考下一個。我認爲這也可能是決定他們考慮他們不同的模式。 什麼樣的實現可能會更好,正如我問Atul:在Web開發中通常情況下這種模式是否適用? –
如果處理程序的#趨向於被固定的和已知的在它們被建立時,像第一一個的實現是從性能的角度來看優選的,因爲你可以然後分配處理程序作爲一個數組。這保存了參考公關的指針。處理程序。至於模式的適用性:許多情況。通常當你想有一些默認行爲(鏈的末尾,一個全部處理程序)和幾個「特例」處理程序。 –