2
我想開發一個類似於工資計算的系統。薪水具有基本價值。最重要的是,員工可以獲得一些獎勵或罰則。裝飾模式似乎適合這種情況工資計算模式
Salary finalSalary = new HardworkBonus(new LateComingPenalty(new BasicSalary()))
System.out.println("Your total salary is : "+ finalSalary.calculate())
此外,我想保存每個計算的結果。所以最後,即使在計算之後,我可以檢索LateComingPenalty有多少。
這似乎是一個共同的問題,即這種類型的發票計算的是involved.There可能是一些比裝飾Pattern.Do更好的選擇,你有更好的建議?
+1爲過度評論。有時裝飾模式真的很可怕 – RichardOD 2009-11-13 10:59:16
可能最好使用像BigDecimal這樣的任意精度類型來支付金額。 – 2009-11-13 13:11:12
感謝您的回答,但不會錯過「最重要的」影響。也許我過分簡化了這個問題。每個組成部分都以某種基礎運作,這不一定是基本工資。例如,如果我們有基本工資,第一筆獎金=基數的2%,第二筆獎金=第一筆獎金的1%,損失罰款=基數的1%,逾期罰款=到現在爲止的10%,所得稅= 16%因此計算順序很重要,計算應該執行一次。我可以用計算的基礎初始化SalaryAdjustment,但是這個Calc需要多次執行。 – anergy 2009-11-13 14:02:53