用java.util.Observable实现Observer模式

本文转载自:dada360778512的博客

原文链接:http://blog.csdn.net/dada360778512/article/details/6977758

Observer模式  主要是观察者与被观察者之间的关系

观察者为羊,被观察者为狼  模仿的场景为狼叫羊跑

代码如下:

1.被观察者类

[java] view plaincopy

  1. package test.pattern.observer;
  2. import java.util.Observable;
  3. public class Wolf extends Observable{
  4. private String name;
  5. Wolf(String name) {
  6. this.name = name;
  7. }
  8. public void cry(String state){
  9. System.out.println(this.getName()+ " crying ");
  10. this.setChanged();
  11. this.notifyObservers(state);
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. }

2.观察者类

[java] view plaincopy

  1. package test.pattern.observer;
  2. import java.util.Observable;
  3. import java.util.Observer;
  4. public class Sheep implements Observer {
  5. private String state = "eating";
  6. private String name;
  7. public Sheep(String name){
  8. this.name = name;
  9. }
  10. public void update(Observable o, Object arg) {
  11. // TODO Auto-generated method stub
  12. Wolf wolf = (Wolf)o;
  13. System.out.println(wolf.getName()+" crying and "+arg+" "+this.getName()+" running.....");
  14. setState("running");
  15. }
  16. public String getState() {
  17. return state;
  18. }
  19. public void setState(String state) {
  20. this.state = state;
  21. }
  22. public String getName() {
  23. return name;
  24. }
  25. public void setName(String name) {
  26. this.name = name;
  27. }
  28. }

3.测试

[java] view plaincopy

  1. package test.pattern.observer;
  2. public class TestObserver {
  3. public static void main(String[] args) {
  4. Wolf wolf = new Wolf("wolf1");
  5. Sheep sheep1 = new Sheep("sheep1");
  6. Sheep sheep2 = new Sheep("sheep2");
  7. Sheep sheep3 = new Sheep("sheep3");
  8. //注册观察者,sheep1,sheep2加入,sheep3未加入
  9. wolf.addObserver(sheep1);
  10. wolf.addObserver(sheep2);
  11. String wolfStat = "hungry";
  12. //wolf begin cry
  13. wolf.cry(wolfStat);
  14. }
  15. }

4.结果:

wolf1 crying 
wolf1 crying and hungry sheep2 running.....
wolf1 crying and hungry sheep1 running.....

时间: 2024-08-08 05:38:06

用java.util.Observable实现Observer模式的相关文章

Java 模拟Awt Button Observer模式

一.概述 Java 的Awt是 Observer模式,现用Java自己模拟awt中Button的运行机制 二.代码 1.Test.java 1 import java.text.DateFormat; 2 import java.text.SimpleDateFormat; 3 import java.util.ArrayList; 4 import java.util.Date; 5 import java.util.List; 6 7 public class Test { 8 9 publ

Java 实现观察者(Observer)模式

1. Java自带的实现 类图 /** * 观察目标 继承自 java.util.Observable * @author stone * */ public class UpdateObservable extends Observable { private int data; public UpdateObservable(Observer observer) { addObserver(observer); /* * add other observer */ } public int

Observer 模式及JAVA内置的observer示例

关于观察者模式 假设今天您设计一个图形分析算表程序,当中有一个资料物件,您可以用表格图形物件.柱状图形物件.圆饼图形物件等方式来 呈现物件,无论您是用哪种图形物件,重点是若资料物件的内容作了更改,则图形物件的内容也必须跟着修改,或许您的程式中有两个以上的图形物件来呈现资料,您在图形物件上更动资料,则另一个图形物 件也必须作出相对应的变化. 主题 资料物件 观察者 柱状图形 表格图形 圆饼图形 又假设您今天设计一个网络游戏,您在服务器上维护一个连线客户端共享的资料物件,当其中一个客户端作了操作,将

Java:应用Observer接口实践Observer模式

在Java中通过Observable类和Observer接口实现了观察者模式.Observer对象是观察者,Observable对象是被观察者. 1. 实现观察者模式 实现观察者模式非常简单, [1]创建被观察者类,它继承自java.util.Observable类: [2]创建观察者类,它实现java.util.Observer接口: [3]对于被观察者类, 添加它的观察者: void addObserver(Observer o) addObserver()方法把观察者对象添加到观察者对象列

java util包概述

util是utiliy的缩写,意为多用途的,工具性质的包这个包中主要存放了:集合类(如ArrayList,HashMap等),随机数产生类,属性文件读取类,定时器类等类.这些类极大方便了Java编程,日常java编程中,经常要用到这些类. 介绍 Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.例如,Java提供日期(Data)类.日历 (Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(St

观察者(Observer)模式

观察者模式又叫做发布-订阅模式(Publish.Subscribe)模式.模型-视图模式(Model/View)模式.源-监听器模式(Source/Listener)模式或从属者(Dependents)模式. 观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 1.  观察者模式结构 一个简单的观察者模型如下: 角色: 抽象(Subject)主题角色:把所有的观察者维持在一个集合中,每个主题都可

Java_观察者模式(Observable和Observer)

本文转载自:殇雲的博客 原文链接:http://blog.csdn.net/tianjf0514/article/details/7475164 一.观察者模式介绍 在Java中通过Observable类和Observer接口实现了观察者模式.一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作. 如果画面A是显示数据库里面的数据,而画面B修改了数据库里面的数据,那么这时候画面A就要重新Load.这

Java_观察者模式(Observable和Observer) -转

原文地址: Java_观察者模式(Observable和Observer) 一.观察者模式介绍    在Java中通过Observable类和Observer接口实现了观察者模式.一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作    如果画面A是显示数据库里面的数据,而画面B修改了数据库里面的数据,那么这时候画面A就要重新Load.这时候就可以用到观察者模二.观察者模式实现方法    java

软件包 java.util 的分层结构

概述  软件包  类  使用   树  已过时  索引  帮助  JavaTM Platform Standard Ed. 6  上一个   下一个 框架    无框架    所有类         <a href="../../allclasses-noframe.html"><b>所有类</b>&