| Interface | Description | 
|---|---|
| InvoiceFormatter | This interface describes the tasks that an invoice
   formatter needs to carry out. | 
| LineItem | A line item in an invoice. | 
| Class | Description | 
|---|---|
| Bundle | A bundle of line items that is again a line item. | 
| DiscountedItem | A decorator for an item that applies a discount. | 
| Invoice | An invoice for a sale, consisting of line items. | 
| InvoiceTester | A program that tests the invoice classes. | 
| Product | A product with a price and description. | 
| SimpleFormatter | A simple invoice formatter. |