Java装饰设计模式的例子

这里给出一个顾客购买咖啡的例子。其中咖啡可以加冰(2元),加巧克力(4元)。

下面是面向对象中装饰模式的解决方案。

/**
 * 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()+"元钱。");
    }
}

 

posted @ 2013-10-28 12:44  无忧之路  阅读(575)  评论(0编辑  收藏  举报
无忧之路