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

素面  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. Myeclipse开发环境下文件中出现的提示错误与解决方法:The import javax.servlet cannot be resolved?
  2. 介绍一些好用的ArcToolbox工具(默认ArcGIS没有)
  3. linux内核杂记(6)-进程调度(1)
  4. php text留言本,PHP+TEXT留言本(五)
  5. stringstream实例
  6. PostgreSQL update tbl1 from tbl2 一对多的注意事项(到底匹配哪条)
  7. 【笔记】A Tutorial of Transformers_复旦大学邱锡鹏报告
  8. Python读取相对路径文件
  9. 重磅出击: Rancher 2.4.x 迁移自定义 k8s 集群
  10. 新浪微博正在审核的开发者平台应用添加测试账号
  11. 第九届蓝桥杯大赛软件类国赛
  12. jssdk 获取微信收货地址_微信公众号JSSDK 获取经纬度
  13. Mac下载软件Motrix 下载速度为零解决办法
  14. 最新优秀开源:车牌识别、车型分析、车流统计、违停检测统统行
  15. 安装memcached.exe时, msvcr71.dll丢失怎么解决
  16. 小程序验证:人的男女偏见对出生性别比例平衡的影响
  17. php拆分excel,PHP如何切割excel大文件(附完整代码)
  18. 关于我学习线代的那些事
  19. 没心没肺的忧伤感情日志:也许,你并不知道我也在等你
  20. 剑池CDK快速使用指南

热门文章

  1. 3dsMax批量传递uv技巧
  2. JavaScript文字虚幻抖动
  3. 【资源】血色代码 blood code (如果喜欢请支持正版,steam有,支持一下国产吧!)
  4. 二维码扫描-zbar的使用
  5. 正确的耳机线整理姿势
  6. PowerBuilder从入坑到放弃(一)第一个HelloWorld程序
  7. 7月国内网站流量统计:新浪和凤凰网竞争较大
  8. YJango的卷积神经网络——介绍
  9. windows上传ipa文件到app store的方法​
  10. Cocos Easing类型API