1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| public class DecoratorTest { public static void main(String[] args) { Beverage beverage = new Coffee(); beverage = new Lemon(beverage); beverage = new Pearl(beverage); System.out.println(beverage.getDescription()+"价格:"+beverage.cost()); } }
interface Beverage{ String getDescription(); double cost(); } class BlackTea implements Beverage{ @Override public String getDescription() { return "红茶☕️"; } @Override public double cost() { return 10; } } class GreenTea implements Beverage{ @Override public String getDescription() { return "绿茶🍵"; } @Override public double cost() { return 10; } } class Coffee implements Beverage{
@Override public String getDescription() { return "咖啡☕️"; }
@Override public double cost() { return 12; } }
abstract class Condiment implements Beverage{
}
class Lemon extends Condiment{ private Beverage beverage; public Lemon(Beverage beverage) { this.beverage = beverage; }
@Override public String getDescription() { return beverage.getDescription()+"加柠檬🍋"; }
@Override public double cost() { return beverage.cost()+2; } }
class Pearl extends Condiment{
private Beverage beverage;
public Pearl(Beverage beverage){ this.beverage = beverage; } @Override public String getDescription() { return beverage.getDescription()+"加珍珠"; }
@Override public double cost() { return beverage.cost()+3; } }
|