米线店结账程序 装饰着模式_云南大学《设计模式》实验报告2_装饰者模式.doc...
云南大学软件学院
实 验 报 告
姓名: 周坤 学号: 20121120256 专业:
实验二 装饰者模式的运用
一、实验目的:装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。在熟悉装饰者模式相关理论知识的基础上,使用装设者模式实现米线店结账小程序。
实验要求:
使用装饰者模式实现米线店结账程序,要求如下:
米线有三种,干浆、酸浆和水米线。
配料有三种,豆腐、鸡蛋、牛肉,今后还会更多。
客户可疑随心所欲的要各种米线搭配各种配料,配料可以加同一种加多份,或者不同种加多份。
设计并绘制该程序的类图;
依照设计的类图使用Java语言编写代码,并实现该程序;
除了核心的模式相关类实现外,提供测试环境,按照难度高低,分别是:
控制台程序,Client硬编码初始化模式和测试环境,运行结果文本输出;
控制台程序,Client初始化测试环境,并根据用户输入运算,运行结果文本输出;
设计并实现用户UI,Client初始化测试环境,并根据用户在UI控件上的输入运算,运行结果文本输出;
实验内容:
类图:
实验代码:
Decorator类:
package decrator;
public abstract class Decorator extends mixian {
public abstract String getDescription();
}
米线及各组分类:
package decrator;
public abstract class mixian {
String description ="Unknown mixian";
public String getDescription(){
return this.description;
}
public abstract double cost();
}
package decrator;
public class ganjiang extends mixian {
public ganjiang() {
// TODO Auto-generated constructor stub
description="干浆米线";
}
@Override
public double cost() {
// TODO Auto-generated method stub
return 5;
}
}
package decrator;
public class shui extends mixian {
public shui() {
// TODO Auto-generated constructor stub
description="水米线";
}
@Override
public double cost() {
// TODO Auto-generated method stub
return 5;
}
}
package decrator;
public class suanjiang extends mixian {
public suanjiang() {
// TODO Auto-generated constructor stub
description="酸浆米线";
}
@Override
public double cost() {
// TODO Auto-generated method stub
return 6;
}
}
配料及其组分类:
package peiliao;
public class DF extends Decorator{
mixian m;
public DF(mixian m){
this.m=m;
}
public String getDescription() {
// TODO Auto-generated method stub
return m.getDescription()+",豆腐";
}
public double cost() {
// TODO Auto-generated method stub
return 1+m.cost();
}
}
public class egg extends Decorator{
mixian m;
public egg(mixian m){
this.m=m;
}
public String getDescription() {
// TODO Auto-generated method stub
return m.getDescription()+",鸡蛋";
米线店结账程序 装饰着模式_云南大学《设计模式》实验报告2_装饰者模式.doc...相关推荐
- 米线店结账程序 装饰着模式_实验报告2_装饰者模式
序号: 姓名: 杨林燕 学号: 106 专业: 软件工程 日期: 成绩: 实验二 装饰者模式的运用 一.实验目的: 装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹 性的替代 ...
- 米线店结账程序 装饰着模式_装饰者模式的运用
实 验 报 告 实验二 装饰者模式的运用 一.实验目的: 装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹 性的替代方案.在熟悉装饰者模式相关理论知识的基础上,使用装设者模式 ...
- 米线店结账程序 装饰着模式_米线店整体装修设计方案图 4款云南过桥米线加盟店47平米室内设计图...
米线店整体装修设计方案图 4款云南过桥米线加盟店47平米室内设计图 云南过桥米线加盟店内部的布置设计散发着中式的气息,宽敞的内部空间很有特色,顶棚石膏天花板无吊顶铺设很规整,再加上方形的长条灯池搭配, ...
- 米线店结账程序 装饰着模式_设计模式——装饰者模式
<Head First 设计模式> 学习笔记,码云同步更新中 如有错误或不足之处,请一定指出,谢谢~ 目录 查看其它设计模式笔记,点这里→设计模式笔记汇总 装饰者模式 定义: 动态地将责任 ...
- 米线店结账程序 装饰着模式_Head First设计模式之装饰者模式
一.定义 装饰者模式,英文叫Decorator Pattern,在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 动态将职责附加到 ...
- 米线店结账程序 装饰着模式_海底捞推出三个子品牌 主打餐饮10元店模式
中国商报/中国商网(记者 贺阳)近日,海底捞旗下的自有子品牌密集入市.中国商报记者梳理发现,主打土豆粉的"乔乔的粉"将于近期开业,售卖米线.水饺的"孟小将"&q ...
- 米线店结账程序 装饰着模式_真实数据:外卖销售9999+ 长沙米线万单店 它究竟是怎么做到的?...
对于餐饮来说,最期望达成的是什么,那一定是月售:9999+的万单店了.万单店如高山仰止,只能心向往之,想做到真的太难了.特别是在疫情期间,餐饮重创,许多品牌生存都艰难,更别提冲击万单店了,孟婆家的酸汤 ...
- 米线店结账程序 装饰着模式_设计模式(三)装饰者模式
装饰者模式是以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案.装饰者模式动态地将责任附加到对象身上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案,比生成子类更加灵活. 通常在继承关系 ...
- 云南大学软件学院java实验九_云南大学java实验9
java实验 (9) 6页 2下载券 Java实验9 4页 2下载券 JAVA实验9 7页 1下载券 java 实验9 暂无评价 1页 免费 Java上机实验9 4页 免费 云大JAVA 实验9图形. ...
- crt 8.7.3 黑暗模式_科技有意思 | 黑黑黑黑黑黑黑黑暗模式
不知从什么时候,手机上的黑暗模式成了系统的标配. 本来这只是系统中的一个功能,现在经过从iOS 13系统的终于支持.苹果督促包括腾讯在内的开发者尽快适配,到一直不支持黑暗模式的微信也答应尽快开发相关功 ...
最新文章
- 编程之美 3.10 分层遍历二叉树
- (原创)用讯飞语音实现人机交互的功能
- C/C++常见报错问题描述及解决方案
- 5.成本会计理论的U9系统实现(上)
- 02python 中的线程
- 1036 跟奥巴马一起编程 (15分)——16行代码AC
- Thinking in Java 11.10 Map
- Ubuntu20.04安装五笔、拼音混合输入法
- excel 永久保存宏命令
- 第 3-7 课:延伸——Flutter Android Studio 开发环境的搭建
- 怎么在 Windows 下生成 文档树 tree?
- python迷宫小游戏代码_TensorFlow应用实战-17-Qlearning实现迷宫小游戏
- 架构师的软实力之发现
- 管家婆辉煌版提示:嘚瑟反馈率F 请联系任我行软件股份公司或当地合法代理,有后门?
- 1. Java EE简介 - JavaEE基础系列
- 通俗易懂讲解什么是波特率
- 分享清新唯美浪漫中秋PPT模板
- vscode——无敌插件真的好用
- ES7版本索引创建失败问题处理
- 基于PIC16F887单片机的数字时钟(DS1302)设计
热门文章
- 在Ubuntu下安装ros
- 需求文档2_The Battle of Polytopia
- m_pRecordset遍历记录集之后,m_pRecordset-MoveFirst()为什么会出错
- The process cannot access the file '' because it is being used by another process.....
- ArrayList、LinkedList原理
- 使用MyBatis后,DAO层的方法还能重载吗?
- dpi数据接入shell脚本
- .NET微信扫码支付模式二API接口开发测试
- 清除Mac OS X文件系统的附加属性@
- 基于RPM包的LAMP搭建