观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。
在日常中,我们配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观察者模式观察者模式java观察者模式观察者模式
Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者...
一个很简单但是明了的java观察者模式的demo。备注几乎每行都加了。
设计模式----观察者模式demo,使用java自带的工具类,实现,后面会上传一个完全自己代码实现的demo
这是以生活中网购为例,详细讲述了Java观察者模式,详情见http://blog.csdn.net/u012810020/article/details/50526586
开发中常用 设计模式 开发者模式,欢迎大家学习。 博客:http://blog.csdn.net/q610098308/article/details/76143959
java观察者模式的实例代码。从最简单的实例开始,到观察者模式。有什么问题可以加扣扣共同探讨
观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式
观察者模式实例,用到java的继承,多态,加深概念理解.
利用气象站监测的例子详细介绍观察者模式的使用方法,具体介绍观察者模式的所适应的场景情况
设计模式的分类,Java代码中使用观察者模式的案例以及文档
在设计一组依赖的对象与它们所依赖的对象之间一致(同步)的交流模型时,观察者模式(Observer Pattern)很有用。它可以使依赖对象的状态与它们所依赖的对象的状态保持同步。这组依赖的对象指的是观察者(Observer)...
用java实现的观察者模式,共需要的人学习,如果有不对的地方也请指出
Java设计模式的观察者模式讲解,可以由浅入深了解观察者模式的应用。
一个以报社、读者为例子的经典观察者模式demo。
Java线程池及观察者模式解决多线程意外死亡重启问题,附件含两个要运行代码!
观察者设计模式,java语言实现,完全自己代码实现,未使用observable和observer
java-观察者模式(Observe)