5.某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图6-1所示的类图。
【java代码】
class invoice{
public void printInvoice( ){
System.out.println("This is the content of the invoice!");
}
}
class Decorator extends Invoice{
protected Invoice ticket;
public Decorator(lnvoice t){
ticket=t;
}
public void printInvoice( ){
if(ticket!=null)
(1);
}
}
class HeadDecorator extends Decorator{
public HeadDecorator(lnvoice t){
super(t);
}
public void printInvoice( ){
Systent.out.println("This is the header of the invoice!");
(2);
}
}
class FootDecorator extends Decorator{
public FootDecorator(Invoice t){
super(t);
}
public void printlnvoice( ){
(3);
Systent.out.println("This is the footnote of the invoice!");
}
}
Class test{
public static void main(String[]args){
Invoice t=new Invioce( );
Invoice ticket;
ticket=(4);
ticket.printInvoice( );
Systent.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!