`
逆风的香1314
  • 浏览: 1389971 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中的观察者模式(Observer)

阅读更多

Java作为一种面向对象的开发语言,对实设计模式提供了良好的支持,并且提供了许多默认的实现,比如:通过Java中的Observable类和Observer接口可以方便的实现观察者模式。 中国自学编程网 www.zxbc.cn

下面我们就用一个实际的例子来说明:日常生活中说起观察者,最常见的例子可能就是天气预报,在这里我们的观察对象是地球,而我们是通过发射气象卫星这个观察者来检测地球气象变化的。

所以这个例子中涉及三个对象:
地球  (Earth):                                          被观察对象
气象卫星(Satellite):                        观察者
气象局(WeatherService):        客户端调用

被观察对象:地球  (Earth)


 import    java.util.Observable;

 /**  */  /**  
 *  被观察对象:地球
 *  
 *    @author    zjun
 *    @version    1.0  create  on  2006-5-18  9:42:45
   */  
   public      class    Earth    extends    Observable      {
         private    String  weather    =      "  晴朗  "  ;

         /**  */  /**  
         *    @return    Returns  the  weather.
           */  
           public    String  getWeather()      {
                 return    weather;
       }  
 
           /**  */  /**  
         *    @param    weather  

        *                        The  weather  to  set.
           */  
           public      void    setWeather(String  weather)      {
                 this  .weather    =    weather;
                 //    设置变化点  
                 setChanged();
               notifyObservers(weather);
       }  
}  
[注意]  在需检测的对象前需要设置变化点setChanged()和通知观察者notifyObservers(),这两个函数是由Observable类实现的,封装了观察者模式实现的细节。

观察者:气象卫星(Satellite)  

 import    java.util.Observable;
 import    java.util.Observer;

 /**  */  /**  
 *  观察对象:气象卫星
 *  
 *    @author    zjun
 *    @version    1.0  create  on  2006-5-18  9:46:30
   */  
   public      class    Satellite    implements    Observer      {
         private    String  weather;

         public      void    update(Observable  obj,  Object  arg)      {
               weather    =    (String)  arg;

                 //    捕获天气变化情况,反馈给检测者  
                 System.out.println(  "  近期天气变化:  "      +    weather);
       }  
}  
客户端调用:气象局(WeatherService)  

   /**  */  /**  
 *  客户端调用:天气预报
 *  
 *    @author    zjun
 *    @version    1.0  create  on  2006-5-18  9:57:19
   */  
   public      class    WeatherService      {

         /**  */  /**  
         *    @param    args
           */  
           public      static      void    main(String[]  args)      {
               Earth  earth    =      new    Earth();
               
               Satellite  satellite    =      new    Satellite();
                 //    发射气象卫星  
                 earth.addObserver(satellite);

               System.out.println(  "  天气预报:  "  );

               System.out.println(  "  ------------  "  );
               earth.setWeather(  "  台风‘珍珠’逼近  "  );
               earth.setWeather(  "  大到暴雨  "  );
               earth.setWeather(  "  天气炎热  "  );
       }  
}  
 
[运行结果]  

 天气预报:
------------
近期天气变化:台风‘珍珠’逼近
近期天气变化:大到暴雨
近期天气变化:天气炎热

分享到:
评论

相关推荐

    Java内置观察者模式

    观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式

    Java 观察者模式的浅析

    Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者...

    详解Observer Pattern(观察者模式)在Java中的使用原理

    我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...

    观察者模式Observer

    观察者模式Observer: 以手机号码为例,老师的手机号码存在学生的手机里,若老师的手机号改变,她会发一条短信通知每个学生自己手机号变了

    Java 设计模式-观察者模式(Observer)

    结合微信公众号讲解观察者模式,生动形象,关键是上手快啊

    java实现观察者模式-Java内置的观察者模式(基于Observable和Observer)

    Java内置的Observable类和Observer接口提供了基本的观察者模式功能,你可以通过继承Observable类和实现Observer接口来使用

    java观察者模式.doc

    在设计一组依赖的对象与它们所依赖的对象之间一致(同步)的交流模型时,观察者模式(Observer Pattern)很有用。它可以使依赖对象的状态与它们所依赖的对象的状态保持同步。这组依赖的对象指的是观察者(Observer)...

    观察者模式(Observer)原理图

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

    观察者模式相关

    观察者 Observer 模式定义:在对象之间定义了一对多的依赖关系 这样一来 当一个对象改变状态时 依赖它的对象都会收到通知并自动跟新 Java已经提供了对观察者Observer模式的默认实现 Java对观察者模式的支持主要体现...

    Java观察者模式代码全解析

    一个很简单但是明了的java观察者模式的demo。备注几乎每行都加了。

    设计模式 观察者 发布/订阅 Observer

    Observer (观察者模式) 又叫做发布/订阅(Publish/Subscribe)模式。 当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响...

    java 观察者模式 demo

    开发中常用 设计模式 开发者模式,欢迎大家学习。 博客:http://blog.csdn.net/q610098308/article/details/76143959

    java观察者模式介绍

    Observer模式定义对象间的一对多的依赖关系,当一个对象(被观察者)的状态发生改变...从名字上可以清楚的看出两者在Observer 设计模式中分别扮演的角色:Observer是观察者角色,Observable是被观察目标(subject)角色。

    Java聊天室 观察者模式和单例模式

    基于观察者模式和单例模式的java聊天室 面向对象设计,抽象,封装,代理,组合和继承 适合理解java面向对象,socket编程,观察者模式和单例模式

    观察者(Observer)模式

    这是java程序言必学的一个设计模式,这个小例子阐述明确,通俗易懂。

    Java设计模式之观察者模式(Observer模式)介绍

    主要介绍了Java设计模式之观察者模式(Observer模式)介绍,Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解,需要的朋友可以...

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

    观察者设计模式,java语言实现,完全自己代码实现,未使用observable和observer

    观察者模式的例子(java)

    .java文件。观察者模式的例子。可以运行,同时帮助理解观察者模式。

    [行为模式]head first 设计模式之观察者模式(observer)

    NULL 博文链接:https://jacky-dai.iteye.com/blog/1132063

    观察者模式

    观察者设计模式观察者<Observer>模式(有时又被称为发布-订阅模式、模型-视图模式、源-收听者模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的...

Global site tag (gtag.js) - Google Analytics