策略模式:它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的使用者。
舉乙個示例來說:乙個**機票系統,普通使用者和vip使用者都可以有三種預定和支付方式。按照普通的程式設計思路,用工廠方法或者簡單工廠,在兩種使用者的對應類裡新增設定使用者預定和支付的方法就可以了,這樣確實也可以解決問題。但是,如果我們的系統需求發生改變(這個經常吧?!),比如說支付和預定方式都增加了,我們的工廠就要相應發生改變,以致**需要重新編譯部署,這不是最好的處理方式。其實這裡支付和預定方式都是對應於具體的某種演算法,所有演算法各自完成的都是相同的工作,只是實現不同,面對演算法的變動,剝離出變化點,我們就會想到策略模式。好了,code is cheap.上**了。
類圖:
**如下:
上面的例項中,iorder和ipay相當於策略模式中的strategy,繼承它們的相當於具體演算法concretestrategy,而customer(或者繼承它的)類相當於context,維護對strategy物件的引用。客戶端呼叫時,可以設定不同的策略。
左右逢源 策略模式
策略模式 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的使用者。舉乙個示例來說 乙個 機票系統,普通使用者和vip使用者都可以有三種預定和支付方式。按照普通的程式設計思路,用工廠方法或者簡單工廠,在兩種使用者的對應類裡新增設定使用者預定和支付的...