下面是一个装饰器设计模式的小例子,感觉简单明了。原文链接是:http://www.cnblogs.com/octobershiner/archive/2011/11/04/2236730.html
interface Basket{
public void show();}
class Original implements Basket{
public void show(){
System.out.println("The original basket contains");
}
}
class AppleDecorator implements Basket{
private Basket basket;
public AppleDecorator(Basket basket){
super();
this.basket = basket;
}
public void show(){
basket.show();
System.out.println("An apple");
}
}
class BananaDecorator implements Basket{
private Basket basket;
public BananaDecorator(Basket basket){
super();
this.basket = basket;
}
public void show(){
basket.show();
System.out.println("An banana");
}
}
class OrangeDecorator implements Basket{
private Basket basket;
public OrangeDecorator(Basket basket){
super();
this.basket = basket;
}
public void show(){
basket.show();
System.out.println("An orange");
}
}
public class DecoratorPattern{
public static void main(String[] args){
Basket basket = new Original();
Basket myBasket = new AppleDecorator(
new BananaDecorator(
new OrangeDecorator(basket)));
myBasket.show();
}
}
看完这个小例子,就很好理解java IO中大量的充斥着这样的例子,如:
DataOutputStream out = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File("d:\\a.txt"))));
所以java中IO类API从设计到使用都体现了装饰器设计模式。