云南大学软件学院

实 验 报 告

姓名: 周坤 学号: 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...相关推荐

  1. 米线店结账程序 装饰着模式_实验报告2_装饰者模式

    序号: 姓名: 杨林燕 学号: 106 专业: 软件工程 日期: 成绩: 实验二 装饰者模式的运用 一.实验目的: 装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹 性的替代 ...

  2. 米线店结账程序 装饰着模式_装饰者模式的运用

    实 验 报 告 实验二 装饰者模式的运用 一.实验目的: 装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹 性的替代方案.在熟悉装饰者模式相关理论知识的基础上,使用装设者模式 ...

  3. 米线店结账程序 装饰着模式_米线店整体装修设计方案图 4款云南过桥米线加盟店47平米室内设计图...

    米线店整体装修设计方案图 4款云南过桥米线加盟店47平米室内设计图 云南过桥米线加盟店内部的布置设计散发着中式的气息,宽敞的内部空间很有特色,顶棚石膏天花板无吊顶铺设很规整,再加上方形的长条灯池搭配, ...

  4. 米线店结账程序 装饰着模式_设计模式——装饰者模式

    <Head First 设计模式> 学习笔记,码云同步更新中 如有错误或不足之处,请一定指出,谢谢~ 目录 查看其它设计模式笔记,点这里→设计模式笔记汇总 装饰者模式 定义: 动态地将责任 ...

  5. 米线店结账程序 装饰着模式_Head First设计模式之装饰者模式

    一.定义 装饰者模式,英文叫Decorator Pattern,在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 动态将职责附加到 ...

  6. 米线店结账程序 装饰着模式_海底捞推出三个子品牌 主打餐饮10元店模式

    中国商报/中国商网(记者 贺阳)近日,海底捞旗下的自有子品牌密集入市.中国商报记者梳理发现,主打土豆粉的"乔乔的粉"将于近期开业,售卖米线.水饺的"孟小将"&q ...

  7. 米线店结账程序 装饰着模式_真实数据:外卖销售9999+ 长沙米线万单店 它究竟是怎么做到的?...

    对于餐饮来说,最期望达成的是什么,那一定是月售:9999+的万单店了.万单店如高山仰止,只能心向往之,想做到真的太难了.特别是在疫情期间,餐饮重创,许多品牌生存都艰难,更别提冲击万单店了,孟婆家的酸汤 ...

  8. 米线店结账程序 装饰着模式_设计模式(三)装饰者模式

    装饰者模式是以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案.装饰者模式动态地将责任附加到对象身上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案,比生成子类更加灵活. 通常在继承关系 ...

  9. 云南大学软件学院java实验九_云南大学java实验9

    java实验 (9) 6页 2下载券 Java实验9 4页 2下载券 JAVA实验9 7页 1下载券 java 实验9 暂无评价 1页 免费 Java上机实验9 4页 免费 云大JAVA 实验9图形. ...

  10. crt 8.7.3 黑暗模式_科技有意思 | 黑黑黑黑黑黑黑黑暗模式

    不知从什么时候,手机上的黑暗模式成了系统的标配. 本来这只是系统中的一个功能,现在经过从iOS 13系统的终于支持.苹果督促包括腾讯在内的开发者尽快适配,到一直不支持黑暗模式的微信也答应尽快开发相关功 ...

最新文章

  1. 编程之美 3.10 分层遍历二叉树
  2. (原创)用讯飞语音实现人机交互的功能
  3. C/C++常见报错问题描述及解决方案
  4. 5.成本会计理论的U9系统实现(上)
  5. 02python 中的线程
  6. 1036 跟奥巴马一起编程 (15分)——16行代码AC
  7. Thinking in Java 11.10 Map
  8. Ubuntu20.04安装五笔、拼音混合输入法
  9. excel 永久保存宏命令
  10. 第 3-7 课:延伸——Flutter Android Studio 开发环境的搭建
  11. 怎么在 Windows 下生成 文档树 tree?
  12. python迷宫小游戏代码_TensorFlow应用实战-17-Qlearning实现迷宫小游戏
  13. 架构师的软实力之发现
  14. 管家婆辉煌版提示:嘚瑟反馈率F 请联系任我行软件股份公司或当地合法代理,有后门?
  15. 1. Java EE简介 - JavaEE基础系列
  16. 通俗易懂讲解什么是波特率
  17. 分享清新唯美浪漫中秋PPT模板
  18. vscode——无敌插件真的好用
  19. ES7版本索引创建失败问题处理
  20. 基于PIC16F887单片机的数字时钟(DS1302)设计

热门文章

  1. 在Ubuntu下安装ros
  2. 需求文档2_The Battle of Polytopia
  3. m_pRecordset遍历记录集之后,m_pRecordset-MoveFirst()为什么会出错
  4. The process cannot access the file '' because it is being used by another process.....
  5. ArrayList、LinkedList原理
  6. 使用MyBatis后,DAO层的方法还能重载吗?
  7. dpi数据接入shell脚本
  8. .NET微信扫码支付模式二API接口开发测试
  9. 清除Mac OS X文件系统的附加属性@
  10. 基于RPM包的LAMP搭建