JAva設計モード-Decorator

1345 ワード



// 
abstract public class Component{ 
	abstract public void prtTicket(); 
} 

// 
public class SaleTicket extend Component{ 
	public void prtTicket(){ 
		System.out.println("Sale Ticket" ); 
	} 
} 

// 
abstract public class TicketDecorator extend Component { 
	private Component myTrailer; 
	public TicketDecorator(Component comp){ 
		myTrailer = comp; 
	} 
	public void callTrailer(){ 
		if (myTrailer != null ) 
			myTrailer.prtTicket(); 
		} 
	} 
}
// header
public class Header extend TicketDecorator{ 
	public Header(Component comp){ 
		super(comp); 
	} 
	public void prtTicket(){ 
		System.out.println("Header" ); 
		super.callTrailer(); 
	} 
} 
// footer
public class Footer extend TicketDecorator{ 
	public Footer (Component comp){ 
		super(comp); 
	} 
	public void prtTicket(){ 
		super.callTrailer(); 
		System.out.println("Footer" ); 
	} 
} 
// 
public class Test{ 
	public static void main(String args[]){ 
		Component c = new Header( new Footer( new SaleTicket())); 
		c.prtTicket(); 
	} 
}