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:       Formats a line item of the invoice.
14:       @return the formatted line item
15:    */
16:    String formatLineItem(LineItem item);
17:    /**
18:       Formats the footer of the invoice.
19:       @return the invoice footer
20:    */
21:    String formatFooter();
22: }