设计模式之装饰(Decorator)模式 代码详解

/**
 * Created with IntelliJ IDEA.
 * User: HYY
 * Date: 13-10-27
 * Time: 下午10:49
 * To change this template use File | Settings | File Templates.
 */
interface Product {
    public double money();
}

class Coffee implements Product{

    @Override
    public double money() {
        return 10;
    }
}

class Ice implements Product {

    private Product product;

    public Ice(Product product) {
        this.product = product;
    }

    @Override
    public double money() {
        return this.product.money() + 2;//加冰两块钱
    }
}

class Chocolate implements Product {
    private Product product;

    public Chocolate(Product product) {
        this.product = product;
    }

    @Override
    public double money() {
        return this.product.money() + 4;//加糖四块钱
    }
}

public class BuyCoffee {
    public static void main(String[] args) {
        Product coffee = new Coffee();
        Product iceCoffee = new Ice(coffee);
        Product chocolateIceCoffee = new Chocolate(iceCoffee);
        System.out.println("你买了巧克力加冰咖啡,一共:"+chocolateIceCoffee.money()+"元钱。");
    }
}
原文地址:https://www.cnblogs.com/wuyou/p/3425150.html