博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用jdk提供类实现观察者模式(二)
阅读量:6769 次
发布时间:2019-06-26

本文共 1166 字,大约阅读时间需要 3 分钟。

1.jdk默认对观察者模式提供了支持

   被观察着继承Observable

    观察者实现Observer接口

 

    被观察者通过调用notifyObservers()方法通知观察者

 

2.代码实现

   /**

Java代码   
  1.  * 被观察者  
  2.  *   Administrator  
  3.  *  
  4.  */  
  5. public class Watched extends Observable {  
  6.   
  7.     public void count(int num){  
  8.           
  9.         for(;num>=0;num--){  
  10.             //通知之前一定要设定setChanged  
  11.             this.setChanged();  
  12.               
  13.             //this.notifyObservers();  
  14.               
  15.             //如果需要为观察者传递信息,调用此方法,observer 的update第二个参数就能接受  
  16.             this.notifyObservers(num);  
  17.               
  18.             try {  
  19.                 Thread.sleep(200);  
  20.             } catch (InterruptedException e) {  
  21.                 e.printStackTrace();  
  22.             }  
  23.         }  
  24.           
  25.     }  
  26. }  

 

 

Java代码   
  1. public class Watcher implements Observer {  
  2.   
  3.     /** 
  4.      * arg0:被观查者对象 
  5.      * arg1:被观察者传递给观察者信息 
  6.      */  
  7.     @Override  
  8.     public void update(Observable arg0, Object arg1) {  
  9.         System.out.println("update....."+arg1);  
  10.     }  
  11.   
  12. }  

 

Java代码   
  1. public class Watcher2 implements Observer {  
  2.   
  3.     @Override  
  4.     public void update(Observable arg0, Object arg1) {  
  5.         System.out.println("update2....."+arg1);  
  6.     }  
  7.   
  8. }  

 

   客户端

Java代码   
  1. public class Main {  
  2.   
  3.     /** 
  4.      * @param args 
  5.      */  
  6.     public static void main(String[] args) {  
  7.         Watched watched = new Watched();  
  8.         Observer watcher = new Watcher();  
  9.         watched.addObserver(watcher);  
  10.         Observer watcher2 = new Watcher2();  
  11.         watched.addObserver(watcher2);  
  12.           
  13.         /** 
  14.          * 那个观察者后被加入,那个观察者update方法就想执行 
  15.          */  
  16.         watched.count(10);  
  17.     }  
  18.   
  19. }  

转载于:https://my.oschina.net/wdkxyd/blog/160416

你可能感兴趣的文章
Nevron winForm用户界面套包Nevron User Interface for .NET
查看>>
OCP题库变动,052新加的考题及答案分析整理-22
查看>>
SQL SERVER中查询参数为空(null)时默认查询所有的实现
查看>>
SCI、EI、ISTP国际三大检索分别指的是什么?
查看>>
JVM垃圾收集器-Serial收集器
查看>>
华为设备亮相全英首次5G电视直播
查看>>
KOL当道,如何高效塑造个人IP?
查看>>
老铁,你想要的AI领域硬件开发平台诞生了!
查看>>
深度链接对社会化营销有哪些价值和作用?
查看>>
华为现神预判,为自己准备了5条强大的后援,拒绝再现中兴尬局
查看>>
强化学习01|“什么叫强化学习
查看>>
IT兄弟连 JavaWeb教程 AJAX定义以及解决的问题
查看>>
常用的linux查看主机命令
查看>>
android 资源
查看>>
我的友情链接
查看>>
Drupal7系统初步设置篇-Ubuntu 14.04 LTS
查看>>
4-3-word2003-word文件操作和视图设置
查看>>
DB2 常用命令大全【转】
查看>>
XenServer安装最佳实践
查看>>
centos6.4下Zabbix系列之Zabbix安装搭建及汉化
查看>>