




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件体系结构与设计模式实验10实验报告1、某公司欲开发一套机房监控系统,如果机房达到某一指定温度,传感器将作出反应,将信号传递给响应设备,如警示灯将闪烁、报警器将发出报警、安全逃生门将自动开启、隔热门将自动关闭等,每一种响应设备的行为由专门的程序来控制,采用观察者模式来设计该系统。(1)UML类图RoomSubject^observers:ArrayList■tenrsRnL■■底:RoomSubject^observers:ArrayList■tenrsRnL■■底:float+attach(£en&arEEfisor)+deta£h(Sensoirsensorj(2)实现代码packagequestionl;importjava.util.ArrayList;/**^^Description:*@Author:Xxx*@Date:2020年5月11日**/publicabstractclassRoomSubjectprotectedArrayListobservers=newArrayList<>();privatefloattemperature;publicvoidsetTemperature(floattemperature){this.temperature=temperature;}publicfloatgetTemperature(){returntemperature;}publicvoidattach(Sensorsensor)(observers.add(sensor);}publicvoiddetach(Sensorsensor)(observers.remove(sensor);}publicabstractvoidcheckTemperature(floattemperature);}packagequestion】;/**^^Description:*@Author:Xxx*@Date:2020年5月11日**/publicclassTemperaturecontrollerextendsRoomSubject(©OverridepublicvoidcheckTemperature(floattemperature)(if(temperature>39){System.out.println(-机房温度已超过正常温度,目前达到"+temperature+"C");for(Objectobject:observers){((Sensor)object).response();}}else(System.out.println("机房当前温度为"+temperature+”,在正常范围,无需发布任何提醒!”);}}}packagequestion1;/***@Description:*@Author:Xxx*@Date:2020年5月11日**/publicinterfaceSensor{voidresponse();}packagequestionl;/**^^Description:*@Author:Xxx*@Date:2020年5月11日**/publicclassAlertorimplementsSensor{©Overridepublicvoidresponse(){System.out.println("报警器正在发出报警声!");}}packagequestionl;/***@Description:*@Author:Xxx*@Date:2020年5月11日**/publicclassWarnningLightimplementsSensor{©Overridepublicvoidresponse(){System.out.println("警示灯正在闪烁!”);}}packagequestion1;/***@Description:*@Author:Xxx*@Date:2020年5月11日**/publicclassEscapeDoorimplementsSensor(©Overridepublicvoidresponse(){System.out.println("安全逃生门已打开!”);packagequestionl;/**^^Description:*@Author:Xxx*@Date:2020年5月11日**/publicclassHeatlsolationDoorimplementsSensor{©Overridepublicvoidresponse(){System.out.println("隔热门已关闭!”);}}(3)测试代码packagequestionl;/***@Description:*@Author:Xxx*@Date:2020年5月11日**/publicclassClient{publicstaticvoidmain(String[]args){RoomSubjectsubject=newTemperatureController();Sensoralertor,light,escapeDoor,heatIsolationDoor;alertor=newAlertor();light=newWarnningLight();escapeDoor=newEscapeDoor();heatlsolationDoor=newHeatIsolationDoor();subject.attach(alertor);subject.attach(light);subject.attach(escapeDoor);subject.attach(heatlsolationDoor);subject.checkTemperature(42);}(4)结果截图机房温度己拼过正常温度,目沛达到42,0^报警器正在发出报警声!警示灯正在闪烁!安全逃生门已打开!隔热门己关闭!正常温度:subject.checkTemperature(34);机房当前温度为34.。,在正常范围,无需发布任何提醒I2、Strategy模式的应用某公司专门销售各种打印机,销售打印机时都有一定的折扣让利给顾客,但折扣计算的方法有很多种,如:不打折;每台减扣固定的金额;按售价的5%打折等等,且折扣计算方法可能发生变化。现在要开发该公司的销售系统,实现打印机销售时的价格计算。要求:请用strategy模式设计解决方案。方案要能够使得在销售打印机(即使是同一种打印机)时可以灵活的选用价格计算方法,并且可以很容易地增加或修改价格计算方法而不至于对整个系统的维护造成困难。实验报告中要求包含设计方案的类图,并给出相应的Java源程序。(1)UML类图(2)实现代码packagequestion2;/**^^Description:*@Author:Xxx*@Date:2020年5月18日**/publicabstractclassSaleStrategy{publicabstractvoiddoDiscount();}packagequestion2;/***@Description:*@Author:Xxx*@Date:2020年5月18日**/publicclassNoDiscountextendsSaleStrategy{privatefloatprice;publicvoidsetPrice(floatprice){this.price=price;}publicfloatgetPrice(){returnprice;}©OverridepublicvoiddoDiscount(){");System.out.println("不打折!每台减扣"+this.getPrice()+"");}}packagequestion2;/***@Description:*@Author:Xxx*@Date:2020年5月18日**/publicclassPercentDiscountextendsSaleStrategy{privatefloatdiscountPercent;publicvoidsetDiscountPercent(floatdiscountPercent){this.discountPercent=discountPercent;}publicfloatgetDiscountPercent(){
returndiscountPercent;}©OverridepublicvoiddoDiscount(){System.out.println("按售价”+this.getDiscountPercent()+"%打折");}}packagequestion2;/**^^Description:*@Author:Xxx*@Date:2020年5月18日**/publicclassContext{privateSaleStrategysalestrategy;publicContext(SaleStrategysalestrategy){this.salestrategy=saleStrategy;}publicvoiddoDiscount()(this.saleStrategy.doDiscount();}}(4)测试代码packagequestion2;/***@Description:*@Author:Xxx*@Date:2020年5月18日**/publicclassClient{publicstaticvoidmain(String[]args){// 不打折;每台减扣固定的金额SaleStrategysaleStrategy=newNoDiscount();((NoDiscount)saleStrategy).setPrice(50);Contextcontext=newContext(saleStrategy);context.doDi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版架子工劳务分包合同书模板
- 二零二五年度房产融资租赁项目评估合同范本
- 二零二五房地产信托基金投资合作开发协议
- 二零二五年高端住宅小区电梯购置及安装合同样本
- 二零二五年度房地产企业合同财务监管与执行细则合同
- 二零二五年餐厅股份购买与加盟管理合同
- 2025版高标准轻钢房建设施工合同示范文本
- 2025版剧本改编聘用合同模板
- 二零二五版车辆事故鉴定、理赔及维修服务合同
- 二零二五车辆挂名免赔条款及执行标准协议
- 法律案件处理流程指南
- 共青团中央所属单位度公开招考61名高校毕业生高频500题难、易错点模拟试题附带答案详解
- 专题11解答压轴题:二次函数综合(原卷版+解析)
- RSVG运行维护手册
- 物流运输管理制度及运输方案
- 2023年国库知识竞赛试题题库
- 2024届高考英语复习备考:高考英语核心词汇清单(涵盖近十年试题高频词汇)
- 内部劳动保障规章制度范本(5篇)
- 代收工程款协议书范本
- 新能源汽车充电设施安全检查记录表
- 2023年中级经济师章节练习题汇总(1-26章)
评论
0/150
提交评论