有一个小吃店,餐牌如下:

素面  10元

加牛肉  5元

素粉  9元

加猪肉  3元

加蛋    2元

Breakfast.java

package Eat;public abstract class Breakfast {String name = "点餐";public String getName() {return name;}public abstract double price() ;}

Mian.java

package Eat;public class Mian extends Breakfast {String name="素面";public String getName() {return name;}@Overridepublic double price() {// TODO Auto-generated method stubreturn 10;}}

Fen.java

package Eat;public class Fen extends Breakfast {String name="素粉";public String getName() {return name;}@Overridepublic double price() {// TODO Auto-generated method stubreturn 9;}}

PeiLiao.java

package Eat;public  class PeiLiao extends Breakfast {private Breakfast breakfast;public PeiLiao(Breakfast breakfast) {this.breakfast=breakfast;}public  String getName() {return breakfast.getName();}public  double price() {return breakfast.price();}
}

Beef.java

package Eat;public class Beef extends PeiLiao {public Beef(Breakfast breakfast) {super(breakfast); }public String getName() {return super.getName()+"+牛肉"; //调用原有业务方法}public double price() {return super.price()+5; //调用原有业务方法}
}

Egg.java

package Eat;public class Egg extends PeiLiao {public Egg(Breakfast breakfast) {super(breakfast); }public String getName() {return super.getName()+"+鸡蛋"; //调用原有业务方法}public double price() {return super.price()+2; //调用原有业务方法}
}

Pork.java

package Eat;public class Pork extends PeiLiao {public Pork(Breakfast breakfast) {super(breakfast); }public String getName() {return super.getName()+"+猪肉"; //调用原有业务方法}public double price() {return super.price()+3; //调用原有业务方法}
}

Client.java

​
package Eat;public class Client {public static void main(String[] args) {// TODO Auto-generated method stubBreakfast a,b,c,d;a=new Mian();b=new Beef(a);c=new Pork(b);d=new Egg(c);System.err.println("点餐:"+d.getName());System.err.println("价格:¥"+d.price());}
}​

运行截图:

装饰模式---早餐加料相关推荐

  1. 设计模式 C++装饰模式

    买了新房(毛坯房)需要装修,对新房进行装修并没有改变房子用于居住的本质,但它让房子变得更漂亮,更加满足居家的需求.在软件设计中,我们也可以用类似的技术对原有对象(新房)的功能进行扩展(装修),以获得更 ...

  2. 加糖加冰加牛奶——装饰模式

    装饰模式 ​ Decorator Pattern:属于GoF23种设计模式中结构型设计模式的一种,又被称为装饰者模式. ​ 简单的说,装饰模式/装饰者模式就是给一个现有的类,在不改变这个类的情况下,动 ...

  3. 装饰模式(装饰设计模式)详解——小马同学@Tian

    装饰模式(装饰设计模式)详解 上班族大多都有睡懒觉的习惯,每天早上上班时间都很紧张,于是很多人为了多睡一会,就会用方便的方式解决早餐问题.有些人早餐可能会吃煎饼,煎饼中可以加鸡蛋,也可以加香肠,但是不 ...

  4. 实现奶茶加料自由---使用装饰器模式制作一杯加料的奶茶

    装饰器模式 结构型模式:关注类和对象的组合.继承的概念被用来组合接口和定义组合对象获得新功能的方式 装饰器模式属于结构型模式的一种 装饰器模式:允许向一个现有的对象添加新的功能,同时又不改变其结构. ...

  5. 设计模式之装饰模式(Java实现)

    "怎么了,鱼哥?" "唉,别提了,网购了一件衣服,结果发现和商家描述的差太多了,有色差就算了,质量还不好,质量不好就算了,竟然大小也不行,说好的3个X,邮的却是一个X的, ...

  6. 快手用旺旺瓶子做机器人_用平底锅做西多士,早餐不发愁,孩子三天两头点名吃,简单快手...

    我第一次知道西多士,是早年前在一档香港美食纪录片里看到的.西多士在欧洲很受宠,而后在中国香港广为流传.西多士是一种食物的叫法,名字听起来十分洋气,其实就是用吐司面包制作的简单料理,又香又软,用来当早餐 ...

  7. 装饰模式(Decorator)

    1.概念 装饰模式动态地给一个对象添加一些额外的职责.就扩展功能而言,它比生成子类方式更为灵活,属于结构性模式一种. 2.模式结构 抽象组件角色(Component):定义一个对象接口,以规范准备接受 ...

  8. 设计模式之装饰模式(Decorator)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  9. 装饰模式(Decorator Pattern)

    装饰模式(Decorator Pattern) 一句话                                                                 继承一个抽象类, ...

最新文章

  1. python与excel互通_【好消息】Python和Excel终于可以互通了!!
  2. re2c php,PHP的词法解析器:re2c
  3. php 百度收录api_php使用百度翻译api示例分享
  4. linux 系统之三
  5. 百万局对战教AI做人,技术解读FPS游戏中AI如何拟人化
  6. 生成方法中参数的注释
  7. django-后台管理-编辑页的选项
  8. request中的技巧
  9. ArchLinux pacman 提高俩倍下载速度方法
  10. 实现Apriori算法(python)
  11. Canonical发布企业级Kubernetes 1.14重点让使用者简单管理
  12. 元旦大礼,JavaScript第四版红宝书送20本!
  13. 2018年全国大学生电子设计竞赛
  14. GoogleEarth-- 一日坐看天下八千里
  15. android永久关闭linux,Android临时和永久关闭selinux
  16. C++ define用法
  17. 2019java学习路线图
  18. 关于MFC中Ribbon界面如何修改标题属性问题
  19. 杰里之AI(692X系列)篇
  20. 如何在android模拟器中模拟sd卡,如何在Android模拟器中模拟SD卡

热门文章

  1. 【colab】谷歌colab免费服务器训练自己的模型,本文以yolov5为例介绍流程
  2. Forecast2013中国电子商务蓝皮书-DCCI简版
  3. Linux基础(day63)
  4. ret/retf/iret
  5. Valet实现应用间数据共享
  6. 用 Python 抓取阿里云盘资源
  7. Leetcode2086. 从房屋收集雨水需要的最少水桶数(medium)
  8. Ruby for SketchUp之Entities对象
  9. 最新县及县以上行政区划代码(截止2013年8月31日)
  10. Java排序:几种List排序性能测试