煎饼果子+鸡蛋+脆皮+葱花+酱料,这些都要加吗?

2026-04-19 07:561阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1262个文字,预计阅读时间需要6分钟。

煎饼果子+鸡蛋+脆皮+葱花+酱料,这些都要加吗?

小故事+话说最近早上起来没时间做早餐,而且早上上班的地铁站不远就有一处非常热闹的甜品店,所以我经常去那边吃甜品+一个‘基础版’的甜品是7块钱,往甜品中+一块鸡蛋。

〇、小故事

话说最近早起没时间做早饭,并且早上上班的地铁口不远处就有一处非常火爆的煎饼摊,所以我就经常去那边吃煎饼,一个“基础版”煎饼是7块钱,向煎饼中加一颗鸡蛋是1元钱加一根火腿肠是3元钱加鸡柳是4元钱……

好像基本上能想到的美食都能往煎饼里塞似的。这就让我想起之前看过的一个短视频,一个小伙子去买煎饼,说要加50颗鸡蛋,然后摊出来的煎饼果子跟一个大披萨似的,非常有趣。

煎饼果子+鸡蛋+脆皮+葱花+酱料,这些都要加吗?

那么,做煎饼果子似乎没什么难度,但是,**怎么计算总价呢?**我们可以往里放各种“辅料”,那计算出来的总价也会千差万别,如果说我们针对不同的煎饼搭配组合都实现cost()价格方法,这样可以吗?如果这种种类少,其实是可以的,但是,如果组合非常多,那必然就造成了“类爆炸了”,那么这种设计方式就不合适了。

那我们还有什么解决办法吗?我们可以采用装饰者模式,来解决这个问题。下面,我们就将视野转到装饰者模式吧。

一、模式定义

装饰者模式定义:

动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

模拟顾客购买煎饼果子+1颗鸡蛋+1根香肠的过程:

二、模式类图

为了可以进一步说明装饰者模式在购买煎饼问题上的处理方法,我们以类图的方式展示煎饼与辅料之间的关系。需要说明的一点是,为了表示煎饼的实现类可以是一个“种族”,所以列举出了“白面煎饼”、"黑面煎饼"和“杂粮煎饼”,这些都属于上面我们所描述的基础类煎饼。

三、代码实现

创建食物抽象类Food,所有食物都需要继承该抽象类:

public abstract class Food { String description = "食物"; public String getDescription() { return description; } public abstract double cost(); }

创建辅料抽象类�AccessoriesDecorator,后续添加到煎饼果子里的辅料都需要继承该类:

public abstract class AccessoriesDecorator extends Food { public abstract String getDescription(); }

创建基础版煎饼果子类JianBing,需要继承Food抽象类:

public class JianBing extends Food { public JianBing() { description = "基础版煎饼果子"; } public double cost() { System.out.println("基础版煎饼果子售价:" + 7 + "元"); return 7; } }

创建鸡蛋类Egg,由于它属于辅料,所以继承AccessoriesDecorator抽象类:

public class Egg extends AccessoriesDecorator { private Food food; public Egg(Food food) { this.food = food; } public String getDescription() { return "鸡蛋"; } public double cost() { System.out.println("添加鸡蛋售价:" + 1 + "元"); return 1 + food.cost(); } }

创建鸡蛋类Sausage,由于它属于辅料,所以继承AccessoriesDecorator抽象类:

public class Sausage extends AccessoriesDecorator { private Food food; public Sausage(Food food) { this.food = food; } public String getDescription() { return "香肠"; } public double cost() { System.out.println("添加香肠售价:" + 3 + "元"); return 3 + food.cost(); } }

创建测试类DecoratorTest�,计算购买1个基础版煎饼果子加入1颗鸡蛋加入1根香肠的总消费金额:

public class DecoratorTest { public static void main(String[] args) { // 创建煎饼果子 Food jianBing = new JianBing(); // 创建鸡蛋,加入到煎饼果子中 Food egg = new Egg(jianBing); // 创建香肠,加入到煎饼果子中 Food sausage = new Sausage(egg); System.out.println("总金额为:" + sausage.cost() + "元"); } }

输出结果:

添加香肠售价:3元 添加鸡蛋售价:1元 基础版煎饼果子售价:7元 总金额为:11.0元

今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

本文共计1262个文字,预计阅读时间需要6分钟。

煎饼果子+鸡蛋+脆皮+葱花+酱料,这些都要加吗?

小故事+话说最近早上起来没时间做早餐,而且早上上班的地铁站不远就有一处非常热闹的甜品店,所以我经常去那边吃甜品+一个‘基础版’的甜品是7块钱,往甜品中+一块鸡蛋。

〇、小故事

话说最近早起没时间做早饭,并且早上上班的地铁口不远处就有一处非常火爆的煎饼摊,所以我就经常去那边吃煎饼,一个“基础版”煎饼是7块钱,向煎饼中加一颗鸡蛋是1元钱加一根火腿肠是3元钱加鸡柳是4元钱……

好像基本上能想到的美食都能往煎饼里塞似的。这就让我想起之前看过的一个短视频,一个小伙子去买煎饼,说要加50颗鸡蛋,然后摊出来的煎饼果子跟一个大披萨似的,非常有趣。

煎饼果子+鸡蛋+脆皮+葱花+酱料,这些都要加吗?

那么,做煎饼果子似乎没什么难度,但是,**怎么计算总价呢?**我们可以往里放各种“辅料”,那计算出来的总价也会千差万别,如果说我们针对不同的煎饼搭配组合都实现cost()价格方法,这样可以吗?如果这种种类少,其实是可以的,但是,如果组合非常多,那必然就造成了“类爆炸了”,那么这种设计方式就不合适了。

那我们还有什么解决办法吗?我们可以采用装饰者模式,来解决这个问题。下面,我们就将视野转到装饰者模式吧。

一、模式定义

装饰者模式定义:

动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

模拟顾客购买煎饼果子+1颗鸡蛋+1根香肠的过程:

二、模式类图

为了可以进一步说明装饰者模式在购买煎饼问题上的处理方法,我们以类图的方式展示煎饼与辅料之间的关系。需要说明的一点是,为了表示煎饼的实现类可以是一个“种族”,所以列举出了“白面煎饼”、"黑面煎饼"和“杂粮煎饼”,这些都属于上面我们所描述的基础类煎饼。

三、代码实现

创建食物抽象类Food,所有食物都需要继承该抽象类:

public abstract class Food { String description = "食物"; public String getDescription() { return description; } public abstract double cost(); }

创建辅料抽象类�AccessoriesDecorator,后续添加到煎饼果子里的辅料都需要继承该类:

public abstract class AccessoriesDecorator extends Food { public abstract String getDescription(); }

创建基础版煎饼果子类JianBing,需要继承Food抽象类:

public class JianBing extends Food { public JianBing() { description = "基础版煎饼果子"; } public double cost() { System.out.println("基础版煎饼果子售价:" + 7 + "元"); return 7; } }

创建鸡蛋类Egg,由于它属于辅料,所以继承AccessoriesDecorator抽象类:

public class Egg extends AccessoriesDecorator { private Food food; public Egg(Food food) { this.food = food; } public String getDescription() { return "鸡蛋"; } public double cost() { System.out.println("添加鸡蛋售价:" + 1 + "元"); return 1 + food.cost(); } }

创建鸡蛋类Sausage,由于它属于辅料,所以继承AccessoriesDecorator抽象类:

public class Sausage extends AccessoriesDecorator { private Food food; public Sausage(Food food) { this.food = food; } public String getDescription() { return "香肠"; } public double cost() { System.out.println("添加香肠售价:" + 3 + "元"); return 3 + food.cost(); } }

创建测试类DecoratorTest�,计算购买1个基础版煎饼果子加入1颗鸡蛋加入1根香肠的总消费金额:

public class DecoratorTest { public static void main(String[] args) { // 创建煎饼果子 Food jianBing = new JianBing(); // 创建鸡蛋,加入到煎饼果子中 Food egg = new Egg(jianBing); // 创建香肠,加入到煎饼果子中 Food sausage = new Sausage(egg); System.out.println("总金额为:" + sausage.cost() + "元"); } }

输出结果:

添加香肠售价:3元 添加鸡蛋售价:1元 基础版煎饼果子售价:7元 总金额为:11.0元

今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」