商場促銷 策略模式(設計模式)

2021-09-12 20:59:47 字數 1547 閱讀 7035

商場收銀時,如何**,用打折還是返利,其實都是一些演算法,用工廠來生成演算法物件,這沒有錯,但演算法本身只是一種策略,最重要的是這些演算法是隨時都可能互相替換的,就這點變化,而封裝變化點是我們物件導向的一種很重要的思維方式。來看看策略模式的結構圖和基本**。

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

策略模式(strategy)結構圖如下:

1. 現金收費介面

2. 正常收費子類

3. 打折收費子類

4. 返利收費子類

5. 現金收費cashcontext類

6. 客戶端**

具體如下:

1.現金收費介面:

public inte***ce cashsuper

2.正常收費子類:

public class cashnormal implements cashsuper3.打折收費子類

public class cashrebate implements cashsuper

public double exceptcash(double money) }

4.返利收費子類

public class cashreturn implements cashsuper

public double exceptcash(double money)

return result;

}}5.現金收費cashcontext類 客戶端**

public class cashcontext

public cashcontext(string type) else if ("滿300返100".equals(type)) else if ("打8折".equals(type))

}public double acceptcash(double money) }

6.客戶端**

public class main

public static void consume(string type, int num, double price) }

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

策略模式的strategy類層次為context定義了一系列的可供重用的演算法或行為。繼承有助於析取出這些演算法中的公共功能。對於打折、返利或者其他的演算法,其實都是對實際商品收費的一種計算方式,通過繼承,可以得到它們的公共功能。

優點:1.簡化了單元測試,因為每個演算法都有自己的類,可以通過自己的介面單獨測試。

2.每個演算法可保證它沒有錯誤,修改其中任乙個時也不會影響其他的演算法,這真是的非常的好。

缺點:1.必須知道所有策略類,這一問題可以由工廠模式加以解決。

2.產生很多策略類,這一問題可以使用享元模式加以解決。

策略模式 商場促銷

封裝的簡單策略類 ifndef stratege h define stratege h include using namespace std class stratege class concretestrategea public stratege class concretestratege...

大話設計模式二 策略模式(商場促銷)

策略模式 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用的演算法客戶。應用案例 商場 的多樣性 折扣,滿減,積分 package strategy abstract class cashsuper class cashnormal extends ca...

讀《大話設計模式》 商場促銷 策略模式

題目 做乙個商場收銀軟體,營業員根據客戶所購買商品的單價和數量,向客戶收費。方案一 用兩個文字框來輸入單價和數量,乙個確定按鈕來算出每種商品的費用,用個列表框來記錄商品的清單,乙個標籤來記錄總計,還需要乙個重置按鈕來重新開始。商場收銀系統v1.0關鍵 double total 0.0d privat...