- 浏览: 30129 次
- 性别:
- 来自: 北京
最新评论
观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。
在日常中,我们配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环境变量时,设置一个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.}
运行结果:
老鹰向左移动三步
母鸡向左移动三步
小鸡向左移动三步
老鹰向左移动一步
母鸡向左移动一步
小鸡向左移动一步
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰向右移动三步
母鸡向右移动三步
小鸡向右移动三步
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰向左移动两步
母鸡向左移动两步
小鸡向左移动两步
老鹰向左移动三步
母鸡向左移动三步
小鸡向左移动三步
老鹰飞走了
母鸡呱呱叫
小鸡唧唧叫
老鹰向右移动一步
母鸡向右移动一步
小鸡向右移动一步
发表评论
-
2019java面试题
2019-01-18 01:01 9631、Map: Map是一个接口,主要实现子类有Hash ... -
Properties文件读取操作
2017-12-20 15:36 621package com.cmccsi.framework.ut ... -
使用jquery的上传插件:ajaxfileupload.js实现excel文件上传
2017-11-24 13:00 4277最近做的一个使用jQuery提供的上传插件,上传excel文件 ... -
ajax发送请求到Spring MVC的Controller 返回json字符串乱码
2017-10-20 17:17 392copy地址:http://blog.csdn.net/dan ... -
Spring声明式事务
2017-08-17 17:28 435常用的SSH框架中,Spring往往配置HibernateTe ... -
为什么每次看了不就还会忘记?关于Struts1的知识。
2017-07-15 16:58 451同事二胎生儿子贺喜与领导升官:既有官运蓬,又有新儿喜。宾朋随喜 ... -
java中的Dae与Calendar
2016-11-28 14:37 622Date类 在JDK1.0中,Date类是唯一的一个代表时间的 ... -
后台调用http短信接口
2016-06-20 17:08 616两种方式,第一种只能用GET方式,POST方式会报 411错误 ... -
proxool连接池的一种配置方式
2016-06-16 15:00 707今天看一个旧系统的连接池配置文件,用的Struts1 : 1 ... -
java类中和js中Date类型数据的编辑实例
2016-02-22 18:00 478今天做一个页面的简单 ... -
关于spring在web.xml中的配置时用listerer和servlet的简述
2016-02-17 16:42 684今天在看一个视频项目时,web.xml中配置用的listene ... -
Java synchronized详解
2016-01-28 10:40 424转自:http://www.cnblogs.com/devin ... -
window.location.href用法
2015-08-18 17:32 876javascript中的location.href有很多种用 ... -
springMVC与struts2的区别 搜的
2015-07-11 17:25 469目前企业中使用SpringMvc的比例已经远远超过Struts ... -
java: 关于反射
2015-07-11 13:52 378前段时间维护系统遇到的一个问题:在服务器上运行的程序有问题,本 ...
相关推荐
观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...
标题中的“java观察者模式Demo”指的是使用Java语言来演示观察者模式的应用。通常,这个Demo会包含一个可观察的对象(Observable)和多个观察者(Observer),当可观察对象的状态发生变化时,会触发通知机制,使得...
本文将深入探讨Java内置的观察者模式,包括其原理、实现方式以及实际应用。 ### 观察者模式的核心概念 1. **主题(Subject)**:被观察的对象,也就是发出通知的一方。在Java中,通常通过实现`java.util....
Java观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在软件工程中广泛应用,尤其在事件驱动和发布/订阅系统中。...
以下是一个简单的Java观察者模式的示例: ```java import java.util.Observable; import java.util.Observer; class WeatherData implements Observable { private float temperature; private float humidity; ...
### Java观察者模式详解 #### 一、观察者模式概述 观察者模式是一种常用的设计模式,主要用于处理对象间的一对多依赖关系。当一个对象(主题)的状态发生变化时,所有依赖于它的对象(观察者)都会收到通知并自动...
在Java中,观察者模式的实现通常基于Java的内置接口`java.util.Observer`和`java.util.Observable`。下面将详细解释观察者模式的概念、结构以及如何在Java中应用这个模式。 **观察者模式的核心概念:** 1. **主题...
总结来说,这个"java观察者模式实例"帮助我们理解如何在实际项目中应用观察者模式,以及如何利用Java的`Observable`和`Observer`接口来实现。通过这个实例,我们可以更好地掌握Java的继承和多态特性,提升软件设计的...
在Java中,观察者模式通常通过`java.util.Observable`和`java.util.Observer`这两个接口来实现。`Observable`类代表被观察的对象,它可以添加多个观察者,并在状态变化时通知它们。而`Observer`接口则定义了观察者的...
在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的设计模式:Model-View-Controller(MVC)模式和Observer(观察者)模式。这两种模式在JavaWeb开发中扮演着至关重要的角色。 ...
以下是一个简单的Java观察者模式案例: ```java import java.util.ArrayList; import java.util.List; // 主题类(被观察者) class ObservableSubject extends Observable { private String state; public ...
在Java中,观察者模式的实现主要依赖于`java.util.Observable`类和`java.util.Observer`接口。`Observable`类代表被观察的对象,而`Observer`接口则表示观察者。下面我们将详细介绍如何在Java中实现观察者模式。 1....
在Java中,观察者模式是通过Java的内置接口`java.util.Observer`和`java.util.Observable`来实现的。 在"java 观察者模式经典案例"中,我们以报社和读者为例来讲解这一模式。假设报社是被观察者(Observable),...
在Java中,观察者模式的实现主要依赖于`java.util.Observable`和`java.util.Observer`这两个接口。下面我们将详细探讨观察者模式的概念、工作原理以及如何在Java中实现它。 观察者模式的核心概念是“观察者”和“被...
在Java中,观察者模式可以通过Java的内置接口`java.util.Observer`和`java.util.Observable`来实现。`Observer`接口代表观察者,而`Observable`类代表被观察的对象,也称为主题(Subject)。下面将详细介绍这两个...
在Java中,我们可以利用Java提供的内置监听器机制来实现观察者模式,例如`ApplicationListener`和`ApplicationEvent`,这两个类主要用于Swing或JavaFX应用程序中的事件处理。 首先,我们来看`ApplicationListener`...
在Java中,观察者模式通常通过Java内置的`java.util.Observable`类和`java.util.Observer`接口来实现。`Observable`类代表被观察的对象,它可以有多个观察者,而`Observer`接口则定义了观察者的通用行为。 首先,...
在Java中,标准的观察者模式实现是通过`java.util.Observable`类和`java.util.Observer`接口来完成的,但本示例特别指出未使用这两个内置工具类,而是完全自定义实现了观察者模式。 观察者模式的主要组件包括: 1. ...
Java观察者模式是一种行为设计模式,它允许一个对象(称为观察者)在其他对象(称为主题)的状态发生改变时接收通知。在Java中,观察者模式是通过`java.util.Observer`和`java.util.Observable`接口实现的。这个模式...