1  /**
  2     This interface describes the tasks that an invoice
  3     formatter needs to carry out.
  4  */
  5  public interface InvoiceFormatter
  6  {
  7     /**
  8        Formats the header of the invoice.
  9        @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  }