`
白浪滔天
  • 浏览: 88514 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

观察者模式实例

    博客分类:
  • java
阅读更多

定义对象间的一种一对多依赖关系,使得每当一个对象改变状态,则其相关依赖的对象都能得到通知并被自动更新.

 定义两个接口:

观察者接口(提供更新等操作的方法)

package DesignPattern.ObserverPattern;

public interface AlarmListener {
 public void  alarm();

}

被观察者接口:(提供注册观察者实现类的方法,提供将改变通知观察者实现类的方法)

package DesignPattern.ObserverPattern;

public interface SensorInterface {
 public void register(AlarmListener al);
 public void soundTheAlarm();
}

具体被观察者定义:

package DesignPattern.ObserverPattern;

import java.util.Enumeration;
import java.util.Vector;

/**
 * 传感器系统
 *
 */
public class SensorSystem implements SensorInterface {
 Vector v=new Vector();
 /**
  *  注册监听者
  */
 public void register(AlarmListener al) {
  
  v.addElement(al);
 }
 /**
  * 发送告警
  */
 public void soundTheAlarm() {
  Enumeration e=v.elements();
  while(e.hasMoreElements()){
   AlarmListener al=null;
   al=(AlarmListener)e.nextElement();
   al.alarm();
  }
 } }

观察者实现类:

package DesignPattern.ObserverPattern;

public class AutoDefense implements AlarmListener{

 public void alarm() {
  System.out.println("********发现威胁*******");
  try {
   Thread.sleep(1000);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println(" 开始启动自动防御系统......");
  try {
   Thread.sleep(1000);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println("********检测到入侵源是一队恐怖分子*****");
  try {
   Thread.sleep(1000);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

}

package DesignPattern.ObserverPattern;

public class Gun implements AlarmListener {

 public void alarm() {
  try {
   Thread.sleep(1000);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println("武器瞄准中......");
  try {
   Thread.sleep(2000);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println("***开枪***");
  try {
   Thread.sleep(2000);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println("恐怖分子已经全部击毙");
 }}

测试类:

package DesignPattern.ObserverPattern;

import DesignPattern.ObserverPattern.AlarmListener;
import DesignPattern.ObserverPattern.SensorSystem;
import DesignPattern.ObserverPattern.SensorInterface;;
public class ClientTest {
 
 public static void main(String[] args){
  SensorInterface sensor=new SensorSystem();
  sensor.register(new AutoDefense());
  sensor.register(new Gun());
  sensor.soundTheAlarm();
 }
 
 
 
}


分享到:
评论

相关推荐

    观察者模式实例代码

    下面是一个简单的实例代码示例,详细注释将帮助理解观察者模式的工作原理: ```java // 定义主题(Subject),即被观察的对象 class ObservableSubject extends Observable { private String status; public ...

    java观察者模式实例

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

    c++观察者模式实例

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在C++中,这种模式经常用于游戏开发,特别是在像cocos2d-x这样的2D游戏引擎...

    C# 观察者模式实例

    观察者模式是软件设计模式中的一种行为模式,它在面向对象编程中扮演着重要的角色,尤其是在C#这样的语言中。观察者模式的核心思想是定义一个一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象...

    IOS 观察者模式实例Demo

    在这个“IOS 观察者模式实例Demo”中,我们将深入探讨如何在iOS应用中实现观察者模式,并通过实际的代码示例来理解其工作原理。 首先,观察者模式的主要角色有两个:主题(Subject)和观察者(Observer)。主题是被...

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

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...

    C#的观察者模式实例

    在这个“C#的观察者模式实例”中,我们将探讨如何在C#中实现这一模式,并通过天气预报的功能进行说明。 观察者模式的核心思想是定义一个一对多的依赖关系,当一个对象(主题)的状态发生改变时,所有依赖于它的对象...

    委托和事件及Button事件于一体的观察者模式实例应用

    ### 委托和事件及Button事件于一体的观察者模式实例应用 #### 观察者模式简介 观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以用于在对象事件发生时通知多个“观察”该对象的...

    委托和事件还有Button事件于一体的观察者模式实例应用

    ### 委托和事件还有Button事件于一体的观察者模式实例应用 #### 观察者模式简介 观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以用于在对象事件发生时通知多个“观察”该对象...

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

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    Android观察者模式实例分析

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在Android开发中,这种模式被广泛用于构建可扩展和灵活的系统,例如事件...

    C# 观察者模式实例介绍

    【观察者模式】是一种设计模式,它在软件开发中用于实现对象之间的通信和事件处理。在C#中,观察者模式允许一个对象(称为主题或被观察者)在状态发生改变时,自动通知所有依赖它的观察者对象。这种模式遵循“发布/...

    Java编程之内置观察者模式实例详解

    Java编程之内置观察者模式实例详解 Java编程之内置观察者模式实例详解主要介绍了Java编程之内置观察者模式,结合实例形式较为详细的分析了java内置观察者模式的原理、实现方法及相关注意事项。 一、观察者模式的...

    观察者模式本质实例DEMO

    观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计模式中的行为模式之一,主要用于在对象之间建立一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新...

    观察者模式实例图解,相信可以帮助大家理解

    这是我在学习工程中自己对这个模式的理解,大家可以看看

    快速学习C++设计模式:观察者模式实例代码

    观察者模式是目前应用最广、影响范围最大的模式之一,因为 Observer 的一个实例 MVC结构(Model/View/Control )在系统开发架构设计中有着很重要的地位和意义,实现了业务逻辑和表示层的解耦。下面示例代码以篮球...

    观察者模式实现了股价涨跌提示

    在这个场景中,"股价涨跌提示"的功能就是一个典型的观察者模式应用实例。让我们深入探讨一下如何使用这种模式来实现这个功能。 在股市中,股民关注的股票价格时刻都在变动。当股票价格的涨跌幅达到特定阈值(例如5%...

    观察者模式模版和例子

    观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件驱动的系统或者...

    观察者模式简单例子

    观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在这个"观察者模式简单例子"中,我们将通过一个天气预报...

Global site tag (gtag.js) - Google Analytics