class Invoice {
    public void printInvoice() {
        System.out.println("This is the content of the invoice!");
    }
}

class Decorator extends Invoice {
    protected Invoice ticket;
    public Decorator(Invoice t) {
        ticket = t;
    }
    public void printInvoice() {
        if (ticket != null)
            (1);
    }
}

class HeadDecorator extends Decorator {
    public HeadDecorator(Invoice t) {
        super(t);
    }
    public void printInvoice () {
        System.out.println("This is the header of the invoice!");
        (2);
    }
}

class FootDecorator extends Decorator {
    public FootDecorator(Invoice t) {
        super(t);
    }
    public void printInvoice() {
        (3);
        System.out.println("This is the footnote of the invoice!");
    }
}

class Test {
    public static void main(String[] args) {
        Invoice t = new Invoice();
        Invoice ticket;
        ticket = (4);
        ticket.printInvoice();
        System.out.println("--------------------");
        ticket = (5);
        ticket.printInvoice();
    }
}

程序的输出结果为：
        This is the header of the invoice!
        This is the content of the invoice!
        This is the footnote of the invoice!
        --------------------
        This is the header of the invoice!
        This is the footnote of the invoice!