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: }