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