package com.lin;public class DecoratePattern {
public static void main(String[] args){
Decorate decorate=new DrinkA();
decorate=new Sugar(decorate);
decorate=new Sugar(decorate);
decorate=new Cream(decorate);
System.out.println("The order\n"+decorate.description()
+"\n$totalprice:"+decorate.cost());
}
}interface Decorate {
public String description(); public float cost();
}abstract class Mixture implements Decorate {
Decorate decorate;
float price;
public String description(){
String str=decorate.description()+"\n"+this.getClass().getSimpleName()+":$"+price;
return str;
}
}class Sugar extends Mixture { public Sugar(Decorate decorate) {
this.decorate = decorate;
price=15;
} public float cost() {
return decorate.cost() + price;
}}class Cream extends Mixture{ public Cream(Decorate decorate) {
this.decorate = decorate;
  price = 10;
} public float cost() {
return decorate.cost() + price;
}
}
class DrinkA implements Decorate{
private float price = 15; public DrinkA(){
}
@Override
public float cost() {
return price;
} @Override
public String description() {
String str=this.getClass().getSimpleName()+":$"+price;
return str;
}
}
print:
The order
DrinkA:$15.0
Sugar:$15.0
Sugar:$15.0
Cream:$10.0
$totalprice:55.0
现在 我想 实现显示时 Sugar:$15.0*2=$30.0 有没有合适的设计模式可以加上去,纯属娱乐