码迷,mamicode.com
首页 > 其他好文 > 详细

装潢模式

时间:2018-01-04 00:17:43      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:get   扩展   pos   ble   new   ide   ring   return   this   

装潢模式

我的理解是,装潢模式的作用就是:扩展类的功能但不修改类,也就是依赖倒置原则

用普通白饭和蛋炒饭举个例子

Food是他们都实现了的接口

public interface Food {
    double getPrice();
}

Rice(白饭)实现了Food接口

public class Rice implements Food {

    @Override
    public double getPrice() {
        return 2.0;
    }

}

蛋炒饭(EggRice)也实现了Food接口,并且持有一个实现了Food接口的对象,也就是普通白饭(EggRice装饰了Rice)

public class EggRice implements Food {

    private Food food;
    private double eggPrice = 1.0;

    public EggRice(Food food) {
        this.food = food;
    }

    @Override
    public double getPrice() {
        return food.getPrice() + eggPrice;
    }

}

测试类

public class Main {
    public static void main(String[] args) {

        Rice rice = new Rice();
        System.out.println("一碗饭要" + rice.getPrice() + "钱");
        EggRice eggRice = new EggRice(rice);
        System.out.println("一碗蛋炒饭要" + eggRice.getPrice() + "钱");
    }
}

输出结果是:

一碗饭要2.0钱
一碗蛋炒饭要3.0钱

装潢模式

标签:get   扩展   pos   ble   new   ide   ring   return   this   

原文地址:https://www.cnblogs.com/shadow-demo/p/8186244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!