观察者模式_简单例子

上传人:第*** 文档编号:30574879 上传时间:2018-01-30 格式:DOC 页数:11 大小:94KB
返回 下载 相关 举报
观察者模式_简单例子_第1页
第1页 / 共11页
观察者模式_简单例子_第2页
第2页 / 共11页
观察者模式_简单例子_第3页
第3页 / 共11页
观察者模式_简单例子_第4页
第4页 / 共11页
观察者模式_简单例子_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《观察者模式_简单例子》由会员分享,可在线阅读,更多相关《观察者模式_简单例子(11页珍藏版)》请在金锄头文库上搜索。

1、1实验五、观测者模式(4 学时)【实验目的】1、了解观测者模式的应用场景、目的和解决问题的方法。2、掌握观测者模式的结构、各角色之间的协作过程和代码实现。3、了解观测者模式的应用。【实验性质】验证性实验【实验内容与步骤】1、 用 Java 或 C#语言实现观测者模式的结构,并用代码说明客户端程序如何应用观测者模式。观察者public interface Observer public void update ();具体观察者public class ConcreteObserver implements Observer private Subject mConcreteSubject;pub

2、lic ConcreteObserver(Subject mConcreteSubject)this.mConcreteSubject = mConcreteSubject ;public void update () System.out.println(得到信息:+mConcreteSubject.getInformation();主题public interface Subject public void attach (Observer o);public void detach (Observer o);public String getInformation();public vo

3、id notifyObservers ();public String setInformation(String s);具体主题import java.util.ArrayList; public class ConcreteSubject implements Subject public ArrayList mObserver;private String Information=;private Object mState;2public ConcreteSubject()mObserver=new ArrayList();public Object getState () retur

4、n 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;

5、public void notifyObservers () for(int i=0;imObserver.size();i+)Observer o= mObserver.get(i);o.update();客户端public class Application public static void main(String args) 3Subject s=new ConcreteSubject();Observer o1=new ConcreteObserver(s);Observer o2=new ConcreteObserver(s);s.attach(o2);s.attach(o1);

6、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 ObserverJTextField text=new JTextF

7、ield();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(+c.getspeed();4观察者转向灯packa

8、ge 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 ObserverJTextField text1=new JTextField();JTextField text2=new JTextField();Observabl

9、e 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)

10、;text2.setBackground(Color.BLACK);if(s=右转)text1.setBackground(Color.BLACK);text2.setBackground(Color.red);观察者方向package driver;import java.util.Observable;import java.util.Observer;5import java.util.Observable;import java.util.Observer;import java.awt.*;import java.awt.event.*;import javax.swing.*;pu

11、blic class direction implements ObserverJTextField 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.getdirect

12、ion();text.setText(+c.getdirection();被观察者 carpackage 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 ActionListenerprivate int speed=30;private String direction=东;private String

13、 turn=;JButton jiasu;JButton jiansu;JButton zuozhuan;JButton youzhuan;public car()jiasu=new JButton(加速);6jiasu.addActionListener(this);jiansu=new JButton(减速);jiansu.addActionListener(this);zuozhuan=new JButton(左转向);zuozhuan.addActionListener(this);youzhuan=new JButton(右转向);youzhuan.addActionListener

14、(this);public JButton getjiasu()return jiasu;public JButton getjiansu()return jiansu;public JButton getzuozhuanxiang()return zuozhuan;public JButton getyouzhuanxiang()return youzhuan;public int getspeed()return speed;public String getdirection()return direction;public String getturn()return turn;pub

15、lic void change(int speed,String direction,String turn)this.speed=speed;this.direction=direction;this.turn=turn;this.setChanged();this.notifyObservers();public void actionPerformed(ActionEvent e) if(e.getSource()=jiasu)int s=speed+10;String d=direction;String t=turn;change(s,d,t);7if(e.getSource()=jiansu)int s=0;if(speed=0)s=0;elses=(speed-10);String d=direction;String t=turn;change(s,d,t);if(e.getSource()=zuozhuan)int s=speed;String d=direction;String t=左转;if(direction=东)change(s,北,t);else if(direction=西)change(s,南,t);else if(direction=南)change(s,东,t);else if(direction=北)change(s,西,t);if(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号