当前位置:首页 > 开发 > 编程语言 > Java > 正文

java观察者模式

发表于: 2015-07-09   作者:3213213333332132   来源:转载   浏览:
摘要: 观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。 在日常中,我们配java环境变量时,设置一个JAVAHOME变量,这就是被观察者,使用了JAVAHOME变量的对象都是观察者,一旦JAVAHOME的路径改动,其他的也会跟着改动。 这样的例子很多,我想用小时候玩的老鹰捉小鸡游戏来简单的描绘观察者模式。 老鹰会变成观察者,母鸡和小鸡是
观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。

在日常中,我们配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观察者模式

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
观察者模式简介: 定义:定义对象间的一对多的依赖关系,当一个对象的状态改变时,所有依赖于它的对
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样
Java 观察者模式的浅析 http://www.blogjava.net/supercrsky/articles/202544.html 简单地说,观察
Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象
Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样
Java设计模式:观察者 简单来说,观察者模式=发布者+订阅者。 下面是一个有关猎头的典型的例子。在
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号