public classSalesTicket {
publicvoid printTicket()
{
System.out.println("这是票据正文!");
}
publicstatic void main(String args[])
{
HeadDecoratorT = new HeadDecorator(new FootDecorator(new SalesTicket()));//你能够想像new FootDecorator(new SalesTicket())到底做了什么?
T.printTicket();
System.out.println("-------------------------");
FootDecoratorT1=new FootDecorator(new HeadDecorator(null));//这句话代表了什么?令人头痛!
T1.printTicket();
}
}
class Decoratorextends SalesTicket
{
SalesTicketticket;
publicDecorator(SalesTicket t)
{
ticket=t;
}
publicvoid printTicket()
{
if(ticket!=null)
ticket.printTicket();
}
}
class HeadDecoratorextends Decorator
{
publicHeadDecorator(SalesTicket t)
{
super(t);
}
publicvoid printTicket()
{
System.out.println("这是票据的台头!");
super.printTicket();
}
}
class FootDecoratorextends Decorator
{
publicFootDecorator(SalesTicket t)
{
super(t);
}
publicvoid printTicket()
{
super.printTicket();
System.out.println("这是票据的脚注!");
}
}
运行结果:
这是票据的台头!
这是票据正文!
这是票据的脚注!
-------------------------
这是票据的台头!
这是票据的脚注!