




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件体系结构与设计模式实验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年中国平板玻璃项目投资计划书
- 赤峰市人民医院内分泌科护士晋升主管护师重症监护考核
- 赤峰市中医院腹腔镜术中出血控制技能考核
- 《义务教育数学课程标准(2022年版)》题库(含答案)
- 初中英语教学中的问题求解教学
- 供热管网安全运行管理制度
- 动物营养与饲料课件
- 高级英语第七课The+Libido+for+The+Ugly
- 信息技术与人工智能基础PPT完整全套教学课件
- 出境游计调业务
- 职业规划与就业指导说课课件(钟立)
- 第四章 §4.1 4.1.1 n次方根与分数指数幂-高中数学人教A版必修一 课件(共41张PPT)
- 涂料用溶剂课件
- 外研版英语七上单词表
评论
0/150
提交评论