![《软件设计模式》课程实验报告-实验12-观察者模式-学号姓名-副本_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/67914269-f82a-4dc7-8a78-8dba8b21c1b9/67914269-f82a-4dc7-8a78-8dba8b21c1b91.gif)
![《软件设计模式》课程实验报告-实验12-观察者模式-学号姓名-副本_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/67914269-f82a-4dc7-8a78-8dba8b21c1b9/67914269-f82a-4dc7-8a78-8dba8b21c1b92.gif)
![《软件设计模式》课程实验报告-实验12-观察者模式-学号姓名-副本_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/67914269-f82a-4dc7-8a78-8dba8b21c1b9/67914269-f82a-4dc7-8a78-8dba8b21c1b93.gif)
![《软件设计模式》课程实验报告-实验12-观察者模式-学号姓名-副本_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/67914269-f82a-4dc7-8a78-8dba8b21c1b9/67914269-f82a-4dc7-8a78-8dba8b21c1b94.gif)
![《软件设计模式》课程实验报告-实验12-观察者模式-学号姓名-副本_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/67914269-f82a-4dc7-8a78-8dba8b21c1b9/67914269-f82a-4dc7-8a78-8dba8b21c1b95.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、幼而福州理工学浣FUZHOU INSTITUTE OF TECHNOLOGY课程名称专业班级姓名学号指导老师日期福州理工学院工学院二。一七年三月实验12 观察者模式的应用、实验目的1 .理解观察者模式的定义2 .掌握观察者模式的结构类图和典型代码、实验准备与环境1.实验准备观察者模式类图Sufcjecl+ update i;abs updtef):+ attach (Observer ote)+ detacti (Observer cbs) 4. notify 0fcr(ob5-Ot»sarrersiObserverConcrete Subject-subjectStete :+ g
2、diState (+ setstate。-$ub)eeiGgrreteOtxrver cbsen/er State :return 莒ubjmHS怕怕obs e n erState=$ubjec t.getsiatej;2.实验环境StarUML (或 Visio)+Eclipse三、实验要求某在线游戏支持多人联机对战,每个玩家都可以加入某一战队组成联盟,当战队中某一成员受到敌人攻击时将给所有盟友发送通知,盟友收到通知后将作出响应。使用观察者模式设计并实现该过程。绘制类图并编程实现。四、实验步骤package com.test.observer;观察者接口,由观察者来实现public inte
3、rface Observer public String getName();public void setName(String name);public void help();声明支援方法public void beAttacked(Subject sub); 声明遭受攻击方式package com.test.observer;public interface Subject public void join(Observer o);public void quit(Observer o);public void notifyObservers(String name);package
4、com.test.observer;import java.util.ArrayList;public class ConcreteSubject implements Subject private String teamName ;战队名称 private ArrayList<Observer> observers,观察者集合/创建战队public ConcreteSubject(String teamName) System.out.println(teamName+ "战队组建成功!"); System.out.println( "="
5、;);observers =new ArrayList<Observer>();this .teamName =teamName;public String getTeamName() return teamName ;public void setTeamName(String teamName) this .teamName = teamName;添加队友Overridepublic void join(Observer o) System.out.println(o.getName()+ "加入"+this .teamName +"战队!&quo
6、t;); observers .add(o);注销观察者Overridepublic void quit(Observer o) System.out.println(o.getName()+ "退出"+this .teamName +"战队!"); observers .remove(o);Overridepublic void notifyObservers(String name) );System.err.println( this .teamName +"战队消息:队友"+name+"正在求救!for (Objec
7、t obs:observers) if(!(Observer)obs).getName().equalsIgnoreCase(name) (Observer)obs).help();package com.kuang.observer.improve;import com.kuang.observer.CurrentConditions;import java.util.ArrayList;public class WeatherData implements Subject温度气压湿度privatefloattemperature;privatefloatpressure;privatefl
8、oathumidity ;观察者集合private ArrayList<Observer> observers;public WeatherData() observers =new ArrayList<Observer>();public float getTemperature() return temperature ;public float getPressure() return pressure ;public float getHumidity() return humidity ;public void dataChange() notifyObser
9、vers();当数据有更新时,就调用setDatapublic void setDatafloat temperature, float pressure, float humidity) this .temperature = temperature;this .pressure = pressure;this .humidity = humidity; dataChange();注册一个观察者Overridepublic void registerObserver(Observer o) observers .add(o);移除一个观察者Overridepublic void remove
10、Observer(Observer o) if (observers .contains(o) observers .remove(o);public class Client 遍历所有的观察者,并Overridepublic void notifyObservers() for (int i = 0; i < observers .size(); i+) observers .get(i).update(this.temperature ,this .pressure ,this .humidity );package com.test.observer;public class Pl
11、ayer implements Observer private String name;public Player(String name) this .name=name;Overridepublic String getName() return this .name;Overridepublic void setName(String name) this .name=name;Overridepublic void help() System.out.println( this .name + "正在路上,猥琐发育 "); Overridepublic void
12、beAttacked(Subject sub) System.out.println( this .name + "救救我!");sub.notifyObservers( name);package com.test.observer;public static void main(String口 args) / TODO Auto-generated method stub定义观察目标对象Subject s1;s1=new ConcreteSubject("GPL");定义5英雄Observer player1,player2,player3,play
13、er4,player5;player1 = new Player("亚瑟");s1.join(player1);player2= new Player("盘古");s1.join(player2);player3= new Player("后羿");s1.join(player3);player4= new Player("王昭君");s1.join(player4);player5= new Player("百里玄策");s1.join(player5);player1.beAttacked(s1);五、讨论与分析观察者模式的主要的作用就是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度房地产个人借款担保合同范本
- 2025年度海洋渔业资源保护合作开发合同
- 2025年度风力发电场建设安全操作合同
- 贵州2025年贵州省司法厅所属事业单位招聘2人笔试历年参考题库附带答案详解
- 衢州2025年浙江衢州职业技术学院招聘人员9人笔试历年参考题库附带答案详解
- 医疗文书管理制度
- 新疆维吾尔自治区克孜勒苏柯尔克孜自治州九年级上学期1月期末语文试题(PDF版含答案)
- 河南2024年河南信阳师范大学招聘专职辅导员30人笔试历年参考题库附带答案详解
- 2025年中国中空导电粒市场调查研究报告
- 2025年贡丸串项目可行性研究报告
- 圆圈正义读书分享课件
- 医院门诊楼装修改造工程 投标方案(技术方案)
- DL∕T 1910-2018 配电网分布式馈线自动化技术规范
- 人教版数学二年级下册全册核心素养目标教学设计
- 医学史完整教学课件
- 双眼视异常处理方法-双眼视异常的棱镜处方(双眼视检查)
- 我国水体中抗生素的污染现状、危害及防治建议
- 手术出血量的评估
- 报价单(产品报价单)
- 2020年8月自考00808商法试题及答案含解析
- 0-9任意四位数数位排列
评论
0/150
提交评论