abstract class Component{ abstract public void printTicket(); } class SalesTicket extends Component{ public void printTicket() { System.out.println("打印出salesTicket的内容"); } } abstract class TicketDecorator extends Component{ private Component myTrailer; public TicketDecorator(Component myComponent){ myTrailer=myComponent; } public void callTrailer(){ if(myTrailer!=null) myTrailer.printTicket(); } } class Header extends TicketDecorator{ public Header(Component myComponent){ super(myComponent); } public void printTicket(){ System.out.println("打印salesTicket的头信息"); super.callTrailer();
} } class Footer extends TicketDecorator{ public Footer(Component myComponent){ super(myComponent); } public void printTicket(){ super.callTrailer(); System.out.println("打印salesTicket的页脚信息"); } } public class Client {
public static void main(String[] args) { System.out.println("===================================="); new Header(new Footer(new SalesTicket())).printTicket(); System.out.println("===================================="); new Footer(new Header(new SalesTicket())).printTicket(); System.out.println("===================================="); }