77范文网 - 专业文章范例文档资料分享平台

观察者模式_简单例子

来源:网络收集 时间:2018-11-30 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实验五、观测者模式(4学时)

【实验目的】

1、了解观测者模式的应用场景、目的和解决问题的方法。

2、掌握观测者模式的结构、各角色之间的协作过程和代码实现。 3、了解观测者模式的应用。

【实验性质】

验证性实验

【实验内容与步骤】

1、 用Java或C#语言实现观测者模式的结构,并用代码说明客户端程序如何应用观测者模式。 观察者

public interface Observer { public void update ();

}

具体观察者

public class ConcreteObserver implements Observer {

private Subject mConcreteSubject;

public ConcreteObserver(Subject mConcreteSubject){

this.mConcreteSubject = mConcreteSubject ; }

public void update () {

System.out.println(\得到信息:\ }

} 主题

public interface Subject {

public void attach (Observer o); public void detach (Observer o); public String getInformation();

public void notifyObservers ();

public String setInformation(String s);

}

具体主题

import java.util.ArrayList;

public class ConcreteSubject implements Subject {

public ArrayList mObserver; private String Information=\

private Object mState;

1

public ConcreteSubject(){

mObserver=new ArrayList(); }

public Object getState () { return mState; }

public void setState (Object val) { mState=val; }

public void attach (Observer o) { if(o!=null)

mObserver.add(o); }

public void detach (Observer o) { if(mObserver.contains(o)) mObserver.remove(o);

}

public String setInformation(String s){ Information=s; return s; }

public String getInformation(){ return Information; }

public void notifyObservers () {

for(int i=0;i

客户端

public class Application {

public static void main(String[] args) {

2

Subject s=new ConcreteSubject(); Observer o1=new ConcreteObserver(s); Observer o2=new ConcreteObserver(s); s.attach(o2); s.attach(o1);

s.setInformation(\你好\ s.notifyObservers(); } }

2、请用观测者模式实现一个汽车驾驶室仪表系统,当汽车改变速度、改变方向时实时显示汽车的速度、方向、指示灯等信息。

观察者速度表 package driver;

import java.util.Observable; import java.util.Observer; import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class SpeedA implements Observer{

JTextField text=new JTextField(\ Observable o; int speed=0;

public SpeedA(Observable o) { text.setVisible(true);

this.o = o;

o.addObserver(this);

}

public JTextField getText(){ return text; }

public void update(Observable o, Object arg) { if(o instanceof car){ car c=new car(); c=(car)o;

speed=c.getspeed();

text.setText(\ } } }

3

观察者转向灯 package driver;

import java.util.Observable; import java.util.Observer; import java.util.Observable; import java.util.Observer; import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class turnlight implements Observer{

JTextField text1=new JTextField(\ JTextField text2=new JTextField(\ Observable o; String s=\

public turnlight(Observable o) { this.o = o;

o.addObserver(this);

}

public JTextField getText1(){ return text1; }

public JTextField getText2(){ return text2; }

public void update(Observable o, Object arg) { if(o instanceof car){ car c=new car(); c=(car)o;

s=c.getturn(); if(s==\左转\

text1.setBackground(Color.red); text2.setBackground(Color.BLACK); }

if(s==\右转\

text1.setBackground(Color.BLACK); text2.setBackground(Color.red); } } } }

观察者方向

package driver;

import java.util.Observable; import java.util.Observer;

4

import java.util.Observable; import java.util.Observer; import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class direction implements Observer{

JTextField text=new JTextField(\ Observable o; String s=\

public direction(Observable o) { this.o = o;

o.addObserver(this);

}

public JTextField getText(){ return text; }

public void update(Observable o, Object arg) { if(o instanceof car){ car c=new car(); c=(car)o;

s=c.getdirection();

text.setText(\ } } }

被观察者car package driver;

import java.util.Observable; import java.util.Observer; import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class car extends Observable implements ActionListener{ private int speed=30;

private String direction=\东\ private String turn=\

JButton jiasu; JButton jiansu; JButton zuozhuan; JButton youzhuan; public car(){

jiasu=new JButton(\加速\

5

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库观察者模式_简单例子在线全文阅读。

观察者模式_简单例子.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/324318.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: