观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。
在日常中,我们配java环境变量时,设置一个JAVAHOME变量,这就是被观察者,使用了JAVAHOME变量的对象都是观察者,一旦JAVAHOME的路径改动,其他的也会跟着改动。
这样的例子很多,我想用小时候玩的老鹰捉小鸡游戏来简单的描绘观察者模式。
老鹰会变成观察者,母鸡和小鸡是观察者,一旦老鹰的动作发生变动,观察者们也会跟着发生变化
package 观察者模式;
/**
* 老鹰(被观察者)
*
* @Description
* @author FuJianyong
* 2015-7-6下午04:56:29
*/
public class Eagle {
/**
* 动作
*/
public static String action;
private String name;
public Eagle(String name){
this.name = name;
}
public void move(){
System.out.println(this.name + action);
}
}
package 观察者模式;
/**
* 母鸡(观察者)
* @Description
* @author FuJianyong
* 2015-7-6下午04:57:50
*/
public class Hen {
private String name;
public Hen(String name){
this.name = name;
}
public void move() {
if(Eagle.action.equals("飞走了")){
System.out.println(this.name + "呱呱叫");
}else{
System.out.println(this.name + Eagle.action);
}
}
}
package 观察者模式;
/**
* 小鸡
* @Description
* @author FuJianyong
* 2015-7-6下午05:00:25
*/
public class Chick{
private String name;
public Chick(String name) {
this.name = name;
}
public void move(){
if(Eagle.action.equals("飞走了")){
System.out.println(this.name + "唧唧叫");
}else{
System.out.println(this.name + Eagle.action);
}
}
}
测试代码:
package 观察者模式;
import java.util.Random;
/**
* @Description 测试
* @author FuJianyong
* 2015-7-6下午04:56:04
*/
public class mainTest {
private static final String[] actions = {"向左移动一步", "向左移动两步", "向左移动三步",
"向右移动一步", "向右移动两步", "向右移动三步", "飞走了"};
public static void main(String[] args) {
Eagle eagle = new Eagle("老鹰");
Hen hen = new Hen("母鸡");
Chick chick = new Chick("小鸡");
Random random = new Random();
int ran;
for(int i=0;i<10;i++){
ran = random.nextInt(actions.length);
Eagle.action = actions[ran];
eagle.move();
hen.move();
chick.move();
}
}
}
运行结果:
老鹰向左移动三步
母鸡向左移动三步
小鸡向左移动三步
老鹰向左移动一步
母鸡向左移动一步
小鸡向左移动一步
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰向右移动三步
母鸡向右移动三步
小鸡向右移动三步
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰向左移动两步
母鸡向左移动两步
小鸡向左移动两步
老鹰向左移动三步
母鸡向左移动三步
小鸡向左移动三步
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰向右移动一步
母鸡向右移动一步
小鸡向右移动一步
分享到:
相关推荐
Java观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在软件工程中广泛应用,尤其在事件驱动和发布/订阅系统中。...
标题中的“java观察者模式Demo”指的是使用Java语言来演示观察者模式的应用。通常,这个Demo会包含一个可观察的对象(Observable)和多个观察者(Observer),当可观察对象的状态发生变化时,会触发通知机制,使得...
以下是一个简单的Java观察者模式的示例: ```java import java.util.Observable; import java.util.Observer; class WeatherData implements Observable { private float temperature; private float humidity; ...
### Java观察者模式详解 #### 一、观察者模式概述 观察者模式是一种常用的设计模式,主要用于处理对象间的一对多依赖关系。当一个对象(主题)的状态发生变化时,所有依赖于它的对象(观察者)都会收到通知并自动...
观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...
Java观察者模式是一种行为设计模式,它允许定义对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,这种模式被内置到`java.util.Observable`和`java.util....
总结来说,这个"java观察者模式实例"帮助我们理解如何在实际项目中应用观察者模式,以及如何利用Java的`Observable`和`Observer`接口来实现。通过这个实例,我们可以更好地掌握Java的继承和多态特性,提升软件设计的...
以下是一个简单的Java观察者模式案例: ```java import java.util.ArrayList; import java.util.List; // 主题类(被观察者) class ObservableSubject extends Observable { private String state; public ...
在Java中,观察者模式是通过Java的内置接口`java.util.Observer`和`java.util.Observable`来实现的。 在"java 观察者模式经典案例"中,我们以报社和读者为例来讲解这一模式。假设报社是被观察者(Observable),...
### Java观察者模式详解 #### 引言:深入探索观察者模式 观察者模式(Observer)是设计模式中的一种常用模式,它定义了一种一对多的依赖关系,使得多个观察者对象可以同时监听某一主题对象。当主题对象的状态发生...
本文将深入探讨Java内置的观察者模式,包括其原理、实现方式以及实际应用。 ### 观察者模式的核心概念 1. **主题(Subject)**:被观察的对象,也就是发出通知的一方。在Java中,通常通过实现`java.util....
在Java中,`java.util.Observer`和`java.util.Observable`接口可以用来实现观察者模式。`Observer`接口定义了一个`update()`方法,而`Observable`类提供了添加、删除观察者以及通知观察者的方法。气象站类可以扩展`...
在Java中,观察者模式的实现主要依赖于`java.util.Observable`类和`java.util.Observer`接口。`Observable`类代表被观察的对象,而`Observer`接口则表示观察者。下面我们将详细介绍如何在Java中实现观察者模式。 1....
在Java中,标准的观察者模式实现是通过`java.util.Observable`类和`java.util.Observer`接口来完成的,但本示例特别指出未使用这两个内置工具类,而是完全自定义实现了观察者模式。 观察者模式的主要组件包括: 1. ...
在Java中,观察者模式通常通过`java.util.Observable`类和`java.util.Observer`接口来实现。 **观察者模式的核心概念** 1. **主题(Subject)**:主题是被观察的对象,它维护了一个观察者列表,并负责在自身状态...
观察者模式是软件设计模式中的一种行为模式,它在Java中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 在Java中,...
在Java中,观察者模式通常通过`java.util.Observable`和`java.util.Observer`这两个接口来实现。`Observable`类代表被观察的对象,它可以添加多个观察者,并在状态变化时通知它们。而`Observer`接口则定义了观察者的...