`
屌丝学Java
  • 浏览: 29870 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转 java观察者模式

    博客分类:
  • Java
 
阅读更多
观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。

在日常中,我们配java环境变量时,设置一个JAVAHOME变量,这就是被观察者,使用了JAVAHOME变量的对象都是观察者,一旦JAVAHOME的路径改动,其他的也会跟着改动。

这样的例子很多,我想用小时候玩的老鹰捉小鸡游戏来简单的描绘观察者模式。

老鹰会变成观察者,母鸡和小鸡是观察者,一旦老鹰的动作发生变动,观察者们也会跟着发生变化




Java代码 
1.package 观察者模式; 
2. 
3./**
4. * 老鹰(被观察者)
5. * 
6. * @Description
7. * @author FuJianyong
8. * 2015-7-6下午04:56:29
9. */ 
10.public class Eagle { 
11.    /**
12.     * 动作 
13.     */ 
14.    public static String action; 
15. 
16.    private String name; 
17.     
18.    public Eagle(String name){ 
19.        this.name = name; 
20.    } 
21.     
22.    public void move(){ 
23.        System.out.println(this.name + action); 
24.    } 
25.     
26.} 




Java代码 
1.package 观察者模式; 
2. 
3./**
4. * 母鸡(观察者)
5. * @Description
6. * @author FuJianyong
7. * 2015-7-6下午04:57:50
8. */ 
9.public class Hen { 
10.     
11.    private String name; 
12.     
13.    public Hen(String name){ 
14.        this.name = name; 
15.    } 
16.     
17.    public void move() { 
18.        if(Eagle.action.equals("飞走了")){ 
19.            System.out.println(this.name + "呱呱叫");           
20.        }else{ 
21.            System.out.println(this.name + Eagle.action); 
22.        } 
23.    }   
24.} 





Java代码 
1.package 观察者模式; 
2. 
3./**
4. * 小鸡
5. * @Description
6. * @author FuJianyong
7. * 2015-7-6下午05:00:25
8. */ 
9.public class Chick{ 
10. 
11.    private String name; 
12.     
13.    public Chick(String name) { 
14.        this.name = name; 
15.         
16.    } 
17.    public void move(){ 
18.        if(Eagle.action.equals("飞走了")){ 
19.            System.out.println(this.name + "唧唧叫");           
20.        }else{ 
21.            System.out.println(this.name + Eagle.action); 
22.        } 
23.    } 
24.} 


测试代码:



Java代码 
1.package 观察者模式; 
2. 
3.import java.util.Random; 
4. 
5./**
6. * @Description 测试
7. * @author FuJianyong
8. * 2015-7-6下午04:56:04
9. */ 
10.public class mainTest { 
11.    private static final String[] actions = {"向左移动一步", "向左移动两步", "向左移动三步",  
12.        "向右移动一步", "向右移动两步", "向右移动三步", "飞走了"}; 
13.     
14.    public static void main(String[] args) { 
15.        Eagle eagle = new Eagle("老鹰"); 
16.        Hen hen = new Hen("母鸡"); 
17.        Chick chick = new Chick("小鸡"); 
18.        Random random = new Random(); 
19.        int ran; 
20.        for(int i=0;i<10;i++){ 
21.            ran = random.nextInt(actions.length); 
22.            Eagle.action = actions[ran]; 
23.            eagle.move(); 
24.            hen.move(); 
25.            chick.move(); 
26.        } 
27. 
28.    } 
29. 
30.} 


运行结果:

老鹰向左移动三步
母鸡向左移动三步
小鸡向左移动三步
老鹰向左移动一步
母鸡向左移动一步
小鸡向左移动一步
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰向右移动三步
母鸡向右移动三步
小鸡向右移动三步
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰向左移动两步
母鸡向左移动两步
小鸡向左移动两步
老鹰向左移动三步
母鸡向左移动三步
小鸡向左移动三步
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰向右移动一步
母鸡向右移动一步
小鸡向右移动一步
分享到:
评论

相关推荐

    java观察者模式观察者模式

    观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...

    java观察者模式Demo

    标题中的“java观察者模式Demo”指的是使用Java语言来演示观察者模式的应用。通常,这个Demo会包含一个可观察的对象(Observable)和多个观察者(Observer),当可观察对象的状态发生变化时,会触发通知机制,使得...

    Java内置观察者模式

    本文将深入探讨Java内置的观察者模式,包括其原理、实现方式以及实际应用。 ### 观察者模式的核心概念 1. **主题(Subject)**:被观察的对象,也就是发出通知的一方。在Java中,通常通过实现`java.util....

    Java观察者模式代码全解析

    Java观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在软件工程中广泛应用,尤其在事件驱动和发布/订阅系统中。...

    java 观察者模式 demo

    以下是一个简单的Java观察者模式的示例: ```java import java.util.Observable; import java.util.Observer; class WeatherData implements Observable { private float temperature; private float humidity; ...

    Java 观察者模式的浅析

    ### Java观察者模式详解 #### 一、观察者模式概述 观察者模式是一种常用的设计模式,主要用于处理对象间的一对多依赖关系。当一个对象(主题)的状态发生变化时,所有依赖于它的对象(观察者)都会收到通知并自动...

    java 设计模式 观察者模式 简单实例 包括测试test类

    在Java中,观察者模式的实现通常基于Java的内置接口`java.util.Observer`和`java.util.Observable`。下面将详细解释观察者模式的概念、结构以及如何在Java中应用这个模式。 **观察者模式的核心概念:** 1. **主题...

    java观察者模式实例

    总结来说,这个"java观察者模式实例"帮助我们理解如何在实际项目中应用观察者模式,以及如何利用Java的`Observable`和`Observer`接口来实现。通过这个实例,我们可以更好地掌握Java的继承和多态特性,提升软件设计的...

    java设计模式之观察者模式

    在Java中,观察者模式通常通过`java.util.Observable`和`java.util.Observer`这两个接口来实现。`Observable`类代表被观察的对象,它可以添加多个观察者,并在状态变化时通知它们。而`Observer`接口则定义了观察者的...

    运用MVC模式及观察者模式的java小程序

    在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的设计模式:Model-View-Controller(MVC)模式和Observer(观察者)模式。这两种模式在JavaWeb开发中扮演着至关重要的角色。 ...

    Java观察者模式案例

    以下是一个简单的Java观察者模式案例: ```java import java.util.ArrayList; import java.util.List; // 主题类(被观察者) class ObservableSubject extends Observable { private String state; public ...

    Java观察者模式代码

    在Java中,观察者模式的实现主要依赖于`java.util.Observable`类和`java.util.Observer`接口。`Observable`类代表被观察的对象,而`Observer`接口则表示观察者。下面我们将详细介绍如何在Java中实现观察者模式。 1....

    java 观察者模式经典案例

    在Java中,观察者模式是通过Java的内置接口`java.util.Observer`和`java.util.Observable`来实现的。 在"java 观察者模式经典案例"中,我们以报社和读者为例来讲解这一模式。假设报社是被观察者(Observable),...

    java 了解观察者模式

    在Java中,观察者模式的实现主要依赖于`java.util.Observable`和`java.util.Observer`这两个接口。下面我们将详细探讨观察者模式的概念、工作原理以及如何在Java中实现它。 观察者模式的核心概念是“观察者”和“被...

    设计模式--观察者模式java例子

    在Java中,观察者模式可以通过Java的内置接口`java.util.Observer`和`java.util.Observable`来实现。`Observer`接口代表观察者,而`Observable`类代表被观察的对象,也称为主题(Subject)。下面将详细介绍这两个...

    观察者模式java实现观察者设计模式

    在Java中,我们可以利用Java提供的内置监听器机制来实现观察者模式,例如`ApplicationListener`和`ApplicationEvent`,这两个类主要用于Swing或JavaFX应用程序中的事件处理。 首先,我们来看`ApplicationListener`...

    设计模式之观察者模式Java实现

    在Java中,观察者模式通常通过Java内置的`java.util.Observable`类和`java.util.Observer`接口来实现。`Observable`类代表被观察的对象,它可以有多个观察者,而`Observer`接口则定义了观察者的通用行为。 首先,...

    java观察者模式demo----未使用java工具类

    在Java中,标准的观察者模式实现是通过`java.util.Observable`类和`java.util.Observer`接口来完成的,但本示例特别指出未使用这两个内置工具类,而是完全自定义实现了观察者模式。 观察者模式的主要组件包括: 1. ...

    java观察者模式

    Java观察者模式是一种行为设计模式,它允许一个对象(称为观察者)在其他对象(称为主题)的状态发生改变时接收通知。在Java中,观察者模式是通过`java.util.Observer`和`java.util.Observable`接口实现的。这个模式...

Global site tag (gtag.js) - Google Analytics