云南大学软件学院
实 验 报 告
姓名: 周坤 学号: 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()+”,鸡蛋”;
相关资源:渣浆泵的计算机选型软件及应用.rar-制造文档类资源-CSDN文库
来源:weixin_39590739
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!