對於每種產品都有相關的成本計算器,如:折扣,商家折扣,商戶獎金,每月折扣等。將來會增加更多成本計算器。成本裝飾者
我們有一個具體的產品類和許多裝飾每個成本計算。所有產品都應該使用所有的計算器,因爲計算器決定根據產品的屬性(如產品商戶編號,類別編號,顏色等)來應用計算。
而且,我們的系統中有數百萬種產品需要計算。所以,我們更好地緩存裝飾的計算器。因爲在運行時裝飾每個產品實體會很昂貴。但這很難用裝飾模式。在我們的情況下,使用這種模式似乎是一種氣味。
你有什麼建議?我們是否應該使用裝飾者,策略或責任鏈模式?或者沒有模式。
裝飾者根據產品屬性進行計算,我們循環產品列表以將這些計算應用於所有產品。因此,在每次迭代中對這些產品進行裝飾時,我們認爲緩存計算邏輯將是一個好主意。但是這很難做裝飾者。所以,更好的方法是使用戰略模式作爲集合/獲取產品。 產品p =新產品(); p.setCalculationStrategy(listOfCalculators); p.price(); //將調用所有計算器,只有感興趣的計算器會計算 – 2009-06-01 11:54:00
p.price(){ return listOfCalculators.price(); } listOfCalculators.price(){ 每個計算器做{ // .... } 返回價格; } – 2009-06-01 11:55:13