装饰模式---早餐加料
有一个小吃店,餐牌如下:
素面 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());}
}
运行截图:
装饰模式---早餐加料相关推荐
- 设计模式 C++装饰模式
买了新房(毛坯房)需要装修,对新房进行装修并没有改变房子用于居住的本质,但它让房子变得更漂亮,更加满足居家的需求.在软件设计中,我们也可以用类似的技术对原有对象(新房)的功能进行扩展(装修),以获得更 ...
- 加糖加冰加牛奶——装饰模式
装饰模式 Decorator Pattern:属于GoF23种设计模式中结构型设计模式的一种,又被称为装饰者模式. 简单的说,装饰模式/装饰者模式就是给一个现有的类,在不改变这个类的情况下,动 ...
- 装饰模式(装饰设计模式)详解——小马同学@Tian
装饰模式(装饰设计模式)详解 上班族大多都有睡懒觉的习惯,每天早上上班时间都很紧张,于是很多人为了多睡一会,就会用方便的方式解决早餐问题.有些人早餐可能会吃煎饼,煎饼中可以加鸡蛋,也可以加香肠,但是不 ...
- 实现奶茶加料自由---使用装饰器模式制作一杯加料的奶茶
装饰器模式 结构型模式:关注类和对象的组合.继承的概念被用来组合接口和定义组合对象获得新功能的方式 装饰器模式属于结构型模式的一种 装饰器模式:允许向一个现有的对象添加新的功能,同时又不改变其结构. ...
- 设计模式之装饰模式(Java实现)
"怎么了,鱼哥?" "唉,别提了,网购了一件衣服,结果发现和商家描述的差太多了,有色差就算了,质量还不好,质量不好就算了,竟然大小也不行,说好的3个X,邮的却是一个X的, ...
- 快手用旺旺瓶子做机器人_用平底锅做西多士,早餐不发愁,孩子三天两头点名吃,简单快手...
我第一次知道西多士,是早年前在一档香港美食纪录片里看到的.西多士在欧洲很受宠,而后在中国香港广为流传.西多士是一种食物的叫法,名字听起来十分洋气,其实就是用吐司面包制作的简单料理,又香又软,用来当早餐 ...
- 装饰模式(Decorator)
1.概念 装饰模式动态地给一个对象添加一些额外的职责.就扩展功能而言,它比生成子类方式更为灵活,属于结构性模式一种. 2.模式结构 抽象组件角色(Component):定义一个对象接口,以规范准备接受 ...
- 设计模式之装饰模式(Decorator)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 装饰模式(Decorator Pattern)
装饰模式(Decorator Pattern) 一句话 继承一个抽象类, ...
最新文章
- Myeclipse开发环境下文件中出现的提示错误与解决方法:The import javax.servlet cannot be resolved?
- 介绍一些好用的ArcToolbox工具(默认ArcGIS没有)
- linux内核杂记(6)-进程调度(1)
- php text留言本,PHP+TEXT留言本(五)
- stringstream实例
- PostgreSQL update tbl1 from tbl2 一对多的注意事项(到底匹配哪条)
- 【笔记】A Tutorial of Transformers_复旦大学邱锡鹏报告
- Python读取相对路径文件
- 重磅出击: Rancher 2.4.x 迁移自定义 k8s 集群
- 新浪微博正在审核的开发者平台应用添加测试账号
- 第九届蓝桥杯大赛软件类国赛
- jssdk 获取微信收货地址_微信公众号JSSDK 获取经纬度
- Mac下载软件Motrix 下载速度为零解决办法
- 最新优秀开源:车牌识别、车型分析、车流统计、违停检测统统行
- 安装memcached.exe时, msvcr71.dll丢失怎么解决
- 小程序验证:人的男女偏见对出生性别比例平衡的影响
- php拆分excel,PHP如何切割excel大文件(附完整代码)
- 关于我学习线代的那些事
- 没心没肺的忧伤感情日志:也许,你并不知道我也在等你
- 剑池CDK快速使用指南