1. 程式人生 > >職責鏈模式——研磨設計模式——跟著cc學設計系列

職責鏈模式——研磨設計模式——跟著cc學設計系列

使用模式來解決的思路 仔細分析上面的場景,當客戶端提出一個聚餐費用的申請,後續處理這個申請的物件,專案經理、部門經理和總經理,自然的形成了一個鏈,從專案經理à部門經理à總經理,客戶端的申請請求就在這個鏈中傳遞,直到有領導處理為止。看起來,上面的功能要求很適合採用職責鏈來處理這個業務。 要讓處理請求的流程可靈活的變動,一個基本的思路,那就是動態構建流程步驟,這樣隨時都可以重新組合出新的流程來。而要讓處理請求的物件也要很靈活,那就要讓它足夠簡單,最好是隻實現單一的功能,或者是有限的功能,這樣更有利於修改和複用。 職責鏈模式就很好的體現了上述的基本思路,首先職責鏈模式會定義一個所有處理請求的物件都要繼承實現的抽象類,這樣就有利於隨時切換新的實現;其次每個處理請求物件只實現業務流程中的一步業務處理,這樣使其變得簡單;最後職責鏈模式會動態的來組合這些處理請求的物件,把它們按照流程動態組合起來,並要求它們依次呼叫,這樣就動態的實現了流程。 這樣一來,如果流程發生了變化,只要重新組合就好了;如果某個處理的業務功能發生了變化,一個方案是修改該處理對應的處理物件,另一個方案是直接提供一個新的實現,然後在組合流程的時候,用新的實現替換掉舊的實現就可以了。