观察者模式实验报告_第1页
观察者模式实验报告_第2页
观察者模式实验报告_第3页
观察者模式实验报告_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本文格式为word版,下载可任意编辑观察者模式实验报告 软件设计与体系结构 实 实 验 报 告 课程名称 软件设计与体系结构 课程编号 0920216 试验项目名称 观看者模式案例 学号 班级 姓名 专业 同学所在学院 指导老师 试验室名称地点 试验时间 试验名称: 观看者模式案例 试验目的:观看者模式(observer pattern)是设计模式中行为模式的一种,它解决了上述具有一对多依靠关系的对象的重用问题。此模式的参加者分为两大类,一类是被观看的目标,另一类是观看该目标的观看者们。正由于该模式是基于"一对多'的关系,所以该模式一般是应用于由一个目标对象和 n 个观看者对

2、象组成(当然也可以扩展为有多个目标对象,但我们现在只争论前者)的场合。当目标对象的状态发生转变或做出某种行为时,正在观看该目标对象的观看者们将自动地、连锁地作出相应的响应行为。 通过本次试验了解观看者模式的原理。并能够运用观看者模式来进行编程。 试验内容 1 uml类图 2 程序的源代码 public class observerapp public static void main(string args) / create the subject and observers. concretesubject i = new concretesubject(ibm, 120.10); con

3、cretesubject j = new concretesubject(ibm, 120.10); nameobserver nameobs = new nameobserver(); priceobserver priceobs = new priceobserver(ibm,张三); priceobserver priceobss = new priceobserver(ibm,李四); / add those observers! i.addobserver(nameobs); i.addobserver(priceobs); j.addobserver(nameobs); j.add

4、observer(priceobss); / make changes to the subject. i.setname(张三); j.setname(李四); i.setprice(120.10); j.setprice(120.10); i.setprice(121.00); j.setprice(121.00); i.setprice(120.50); j.setprice(120.50); i.setprice(120.75); j.setprice(120.75); import java.util.observable; public class concretesubject

5、extends observable private string name; private double price; public concretesubject(string name, double price) = name; this.price = price; public string getnameone() return name; public double getprice() return price; public void setname(string name) = name; setchanged(); notify

6、observers(name); public void setprice(double price) this.price = price; setchanged(); notifyobservers(new float(price); import java.util.observer; import java.util.observable; public class nameobserver implements observer private string name; public nameobserver() name = null; public void update(obs

7、ervable obj, object arg) if (arg instanceof string) name = (string)arg; import java.util.observer; import java.util.observable; public class priceobserver implements observer private float price; private string name1; private string name2; public priceobserver(string namef,string names) price = 0; n

8、ame1 = namef; name2 = names; public void update(observable obj, object arg) if (arg instanceof float) price = (float)arg).floatvalue(); system.out.println(通知到股民 +name2+ +name1+最新股价为+price); 3试验截图 对该模式的熟悉 经过本次观看者模式的试验,通过自己动手编代码,是自己理解观看者模式机制,并且知道观看者模式有以下的优点:第一、观看者模式在被观看者和观看者之间建立一个抽象的耦合。被观看者角色所知道的只是一个详细观看者列表,每一个详细观看者都符合一个抽象观看者的接口。被观看者并不熟悉任何一个详细观看者,它只知道它们都有一个共同的接口。 由于被观看者和观看者没有紧密地耦合在一起,因此它们可以属于不同的抽象化层次。假如被观看者和观看者都被扔到一起,那么这个对象必定跨越抽象化和详细化层次。 其次、观看者模式支持广播通讯。被观看者

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论