java 设计模式 之 装饰模式

2014-11-24 07:40:16 · 作者: · 浏览: 0

Cake.java

package five;

public abstract class Cake {
	
	public abstract void feel();
}

Decorate.java

package five;

public abstract class Decorate extends Cake {

	public Cake cake;
	public  Decorate(Cake cake) {
		this.cake = cake;
	}

	public abstract void feel();
}

ChococateCake.java

package five;

public class ChococateCake extends Cake {

	@Override
	public void feel() {
		// TODO Auto-generated method stub
		System.out.println("略有点苦味的巧克力");
	}
}

IceCreamCake.java

package five;

public class IceCreamCake extends Cake {

    @Override
    public void feel() {
        // TODO Auto-generated method stub
        System.out.println("略有点凉的冰淇凌");
    }
}

NutDecorate.java

package five;


public class NutDecorate extends Decorate{

	private String str = "用坚果进行修饰";
	public NutDecorate(Cake cake) {
		super(cake);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void feel() {
		// TODO Auto-generated method stub
		super.cake.feel();
		System.out.println(str);
	}
	
}

FlowerDecorate.java

package five;

public class FlowerDecorate extends Decorate {

    private String str = "用花进行修饰";
    public FlowerDecorate(Cake cake) {
        super(cake);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void feel() {
        // TODO Auto-generated method stub
        super.cake.feel();
        System.out.println(str);
    }
}

Main.java

package five;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;

public class Main {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		Cake c = new ChococateCake();
		Cake nut = new NutDecorate(c);
		nut.feel();
		
		InputStream fis = new FileInputStream("d:\\");
		InputStream bis = new BufferedInputStream(fis, 16);
		InputStream ois = new ObjectInputStream(bis);
		
	}

}