实验报告2 装饰者模式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云南大学软件学院
实验报告
成绩:日期:106专业:软件工程序号:姓名:杨林燕学号:
装饰者模式的运用实验二
一、实验目的:装饰者模式动态地将责任附加到对象上,若要扩展功能,
装饰者提供了比继承更有弹
性的替代方案。在熟悉装饰者模式相关理论知识的基础上,使用装设者模式实现米线店结账小程序。二、实验要求:使用装饰者模式实现米线店结账程
序,要求如下:米线有三种,干浆、酸浆和水米线。1.
配料有三种,豆腐、鸡蛋、牛肉,今后还会更多。2.
或者不客户可疑随心所欲的要各种米线搭配各种配料,配料可以加同一种加多份,3.同种加多份。
设计并绘制该程序的类图;1、
语言编写代码,并实现该程序;照设计的类图使用依Java2、了核心的模式相关类实现外,提供测试环境,按照难度高低,分别是:、除3硬编码初始化模式和测试环境,运行结果文本输出;控制台程序,Clienta)
Client初始化测试环境,并根据用户输入运算,运行结果文本输出;b)控制台程序,控件上的输入运算,UI,Client初始化测试环境,并根据用户在设计并实现用户c)UI 运行结果文本输出;
三、实验内容:1.类图
2.代码MiXian类:package ;
public abstract class MiXian {
String description;
String getDescription() { public return description; } abstractpublic cost(); double}
类:CondimentDecorator
public abstract class CondimentDecorator extends MiXian {
public abstract String getDescription();
}GanJiang类:
public class GanJiang extends MiXian {
public GanJiang() {
description = 干浆米线 ;
}
public double cost() {return .20; }}SuanJiang类:
public class SuanJiang extends MiXian {
public SuanJiang() {
description = 酸浆米线;
}
double cost() {public
.25; return
}}ShuiJiang类:
public class ShuiJiang extends MiXian {
public ShuiJiang() {
description = 水浆米线;
}
double cost() {public
.15; return }}DouFu类:
public class DouFu extends CondimentDecorator {
;miXian MiXian
DouFu(MiXian miXian) {public
= miXian;
}
public String getDescription() {
return () + ,+豆腐;
}
cost() {public double .05 + (); return }NiuRou类:
public class NiuRou extends CondimentDecorator {
MiXian miXian;
public NiuRou(MiXian miXian) {
= miXian;
}
public String getDescription() {; () + return,+牛肉 }
double cost() {public .15 + ();return
}}JiDan类:
public class JiDan extends CondimentDecorator {
;miXian MiXian
JiDan(MiXian miXian) { public = miXian;
}
public String getDescription() {;鸡蛋,+ () + return}
public cost() { double .10 + ();return}
YanShi类:
public class YanShi {
public static void main(String args[]) {
MiXian suan = new SuanJiang();
+ ¥ + ());
new MiXian miXian2 = GanJiang();new miXian2 = JiDan(miXian2);new miXian2 =
NiuRou(miXian2);new miXian2 = DouFu(miXian2);
+ ()); ?尤 +
MiXian miXian3 = new ShuiJiang();new miXian3 = JiDan(miXian3);
miXian3 = new NiuRou(miXian3);new miXian3 = DouFu(miXian3);
+ + ());?尤
}}4.测试结果
四、实验总结:
通过本次实验,加深了对装饰者模式意图,使用场景以及使用效果的理解,以动态、透明的方式给单个对象添加职责就增加功能来说,Decorator 模式比生成子类更为灵活;