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: }