01: /** 02: A decorator for an item that applies a discount. 03: */ 04: public class DiscountedItem implements LineItem 05: { 06: /** 07: Constructs a discounted item. 08: @param item the item to be discounted 09: @param discount the discount percentage 10: */ 11: public DiscountedItem(LineItem item, double discount) 12: { 13: this.item = item; 14: this.discount = discount; 15: } 16: 17: public double getPrice() 18: { 19: return item.getPrice() * (1 - discount / 100); 20: } 21: 22: public String toString() 23: { 24: return item.toString() + " (Discount " + discount 25: + "%)"; 26: } 27: 28: private LineItem item; 29: private double discount; 30: }