关于装饰者模式的总结

装饰者模式:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另外一种选择。java

装饰者模式UML图:ide

装饰者模式具体例子:this

public abstract class Beverage {
	String desription = "Unknown Beverage";
	
	public String getDescription(){
		return desription;
	}
	public abstract double cost();
	
}
public abstract class CondimentDecorator extends Beverage{
	public abstract String getDescription();

}
public class DarkRoast extends Beverage {
	
	public DarkRoast(){ 
		desription = "Dark Roast Coffee";
	}

	@Override
	public double cost() {
		// TODO Auto-generated method stub
		return 2.10;
	}

}
public class Espresso extends Beverage {
	
	public Espresso(){
		desription = "Espresso";
	}

	@Override
	public double cost() {
		// TODO Auto-generated method stub
		return 1.99;
	}

}
public class HouseBlend extends Beverage {
	
	public HouseBlend(){
		desription = "HouseBlend";
	}

	@Override
	public double cost() {
		// TODO Auto-generated method stub
		return .89;
	}

}
public class Mocha extends CondimentDecorator {
	Beverage beverage;
	
	public Mocha(Beverage beverage){
		this.beverage = beverage;
	}
	@Override
	public String getDescription() {
		// TODO Auto-generated method stub
		return beverage.getDescription()+", Mocha";
	}

	@Override
	public double cost() {
		// TODO Auto-generated method stub
		return .20 + beverage.cost();
	}

}
public class Soy extends CondimentDecorator {
	Beverage beverage;
	
	public Soy(Beverage beverage){
		this.beverage = beverage;
	}
	
	public int getSize(){
		return beverage.getSize();
	}
	@Override
	public String getDescription() {
		// TODO Auto-generated method stub
		return beverage.getDescription()+", Soy";
	}

	@Override
	public double cost() {
		// TODO Auto-generated method stub
		return  .10 + beverage.cost();
	}

}

使用场景:java.io类code

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息