1. 程式人生 > >設計模式之二 商場促銷-策略模式

設計模式之二 商場促銷-策略模式

   策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各種演算法類與使用演算法類之間的耦合。

   策略模式(Strategy):它定義了演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。

   當不同的行為堆砌在一個類中時,就很難避免使用條件語句來選擇合適的行為。將這些行為封裝在一個個獨立的Strategy類中,可以在使用這些行為的類中消除條件語句。

    程式碼寫完之後,感覺它與簡單工廠模式區別不是很大,就是讓使用者只需要認識context一個類就行了,簡單工廠的話多認識一個cashsuper類。

     下面分別列舉簡單工廠,策略模式,策略模式結合簡單工廠實現的程式碼(不知道如何上傳整個原始碼)

簡單工廠模式

策略模式

CashNormal類、CashRebate類、 CashReturn類、 CashSuperMarket類保持不變,需要修改的是去掉工廠類,將選擇收款方式轉移到客戶端,新增一個CashContext類

 策略模式與工廠模式結合 只需修改CashContext類和客戶端的實現部分

這一章早就該發了,結果因為一些事情拖到今天,呵呵