01: /**
02:    This interface describes the tasks that an invoice
03:    formatter needs to carry out.
04: */
05: public interface InvoiceFormatter
06: {
07:    /**
08:       Formats the header of the invoice.
09:       @return the invoice header
10:    */
11:    String formatHeader();
12: 
13:    /**
14:       Formats a line item of the invoice.
15:       @return the formatted line item
16:    */
17:    String formatLineItem(LineItem item);
18: 
19:    /**
20:       Formats the footer of the invoice.
21:       @return the invoice footer
22:    */
23:    String formatFooter();
24: }