




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院信息系统与银行的合作模式探讨
- 医疗行业中的可持续包装解决方案-EPS再生料介绍
- 区块链在医疗健康认证中的透明化应用
- 医务管理者的道德领导力培养
- 医疗科技助力医养结合引领养老新风尚
- 低段语文教研组总结模版
- 二房东转租合同范例
- 从金融到非金融看区块链如何全面改变行业
- 医院管理中患者隐私保护的制度建设与实施
- 医疗行业数据泄露的危害与防范措施
- SLT824-2024 水利工程建设项目文件收集与归档规范
- 女性下生殖道粘连诊治中国专家共识(2024年版)解读
- 中建医疗工程交付指南
- 2023年全国职业院校技能大赛-嵌入式系统应用开发赛项规程
- 胃酸监测技术的新进展
- 旋挖钻孔灌注桩施工技术交底记录(干作业)
- 2024年省职工职业技能大赛数控机床装调维修工竞赛理论考试题库(含答案)
- 中国无人潜航器行业全景速览
- 求购重型牵引车合同
- 《那个星期天》公开课一等奖创新教案
- 文秘岗面试题
评论
0/150
提交评论