`
darrendu
  • 浏览: 194067 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

03使用jdk提供类实现观察者模式(三)

阅读更多

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

   被观察着继承Observable

    观察者实现Observer接口

 

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

 

2.代码实现

   /**

 * 被观察者
 * @author Administrator
 *
 */
public class Watched extends Observable {

	public void count(int num){
		
		for(;num>=0;num--){
			//通知之前一定要设定setChanged
			this.setChanged();
			
			//this.notifyObservers();
			
			//如果需要为观察者传递信息,调用此方法,observer 的update第二个参数就能接受
			this.notifyObservers(num);
			
			try {
				Thread.sleep(200);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		
	}
}

 

 

public class Watcher implements Observer {

	/**
	 * arg0:被观查者对象
	 * arg1:被观察者传递给观察者信息
	 */
	@Override
	public void update(Observable arg0, Object arg1) {
		System.out.println("update....."+arg1);
	}

}

 

public class Watcher2 implements Observer {

	@Override
	public void update(Observable arg0, Object arg1) {
		System.out.println("update2....."+arg1);
	}

}

 

   客户端

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Watched watched = new Watched();
		Observer watcher = new Watcher();
		watched.addObserver(watcher);
		Observer watcher2 = new Watcher2();
		watched.addObserver(watcher2);
		
		/**
		 * 那个观察者后被加入,那个观察者update方法就想执行
		 */
		watched.count(10);
	}

}
 
分享到:
评论

相关推荐

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

    设计模式之观察者模式Java版本实现和UML类设计图

    Java观察者模式代码

    用java实现的观察者模式,共需要的人学习,如果有不对的地方也请指出

    使用Java8实现观察者模式的方法(上)

    本文给大家介绍使用java8实现观察者模式的方法,涉及到java8观察者模式相关知识,对此感兴趣的朋友一起学习吧

    java观察者模式介绍

    JDK里提供的observer设计模式的实现由java.util.Observable类和 java.util.Observer接口组成。从名字上可以清楚的看出两者在Observer 设计模式中分别扮演的角色:Observer是观察者角色,Observable是被观察目标...

    全面解析Java8观察者模式

    主要为大家全面解析Java8观察者模式,通过在 Java8 环境下实现观察者模式的实例,进一步介绍了什么是观察者模式、专业化及其命名规则,感兴趣的小伙伴们可以参考一下

    java设计模式选择题复习题.doc

    工厂模式定义一个创建对象的接口,让子类决定实例化哪一个类 5观察者模式的推拉有什么不同?适用场景 现在要说的分歧在这里: "推"的方式是指,Subject维护一份观察者的列表,每当有更新发生,Subject会把更新 消息...

    美团Java 岗 154 道面试题.zip

    100.在 Java 中,什么叫观察者设计模式(observer design pattern)? 101.使用工厂模式最主要的好处是什么?在哪里使用? 102.举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类...

    android eventbus source code

    在编程过程中,当我们想通知其他组件某些事情发生时,我们通常使用观察者模式,正式因为观察者模式非常常见,所以在jdk1.5中已经帮助我们...可以很方便的帮助我们实现观察者模式,那么我们就开始学习如何使用EventBus.

    Activiti 5.15 用户手册

    内部实现类 2. 开始学习 一分钟入门 安装Activiti 安装Activiti数据库 引入Activiti jar和依赖 下一步 3. 配置 创建ProcessEngine ProcessEngineConfiguration bean 数据库配置 支持的数据库 创建数据库...

    EventBus消息总线

    EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。 ...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第二阶段13讲、使用观察者设计模式观察线程的生命周期.mp4 │ 高并发编程第二阶段14讲、单线程执行设计模式,有一个门,始终只能一个人通过-上.mp4 │ 高并发编程第二阶段15讲、单线程执行设计模式...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段13讲、使用观察者设计模式观察线程的生命周期.mp4 │ 高并发编程第二阶段14讲、单线程执行设计模式,有一个门,始终只能一个人通过-上.mp4 │ 高并发编程第二阶段15讲、单线程执行设计模式...

    基于java语言,使用springboot框架开发的学生考勤管理系统.7z

    能学到什么:①工厂模式、策略模式、观察者模式等都是怎么在Spring中体现的;②IOC、AOP、代理、切面,循环依赖都是如何设计和实现的、:I0C、AOP、Bean生命周期、上下文、作用域、资源处理等。 基于java语言,使用...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    观察者模式 状态模式 策略模式 模板方法模式 访问者模式 设计案例 UML 架构 系统架构能力 基本理论 扩展性设计 可用性设计 可靠性设计 一致性设计 负载均衡设计 过载保护设计 协议设计 二进制协议...

    Java NIO原理和使用

    NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有事件发生时,他会通知我们,传回一组SelectionKey,我们读取这些Key,就会获得我们刚刚注册...

    linux下java以及maven的安装包

    能学到什么:①通过安装完成java之后,可以用其来学校对应的设计模式,比如:工厂模式、策略模式、观察者模式等. ②通过maven自主学习,还可以知道一些知识点都是怎么在Spring中体现的比如IOC、AOP、代理、切面、循环...

    JAVA高并发高性能高可用高扩展架构视频教程

    新版本通俗易懂_观察者模式递进时讲解 ibatis连接数据库 高并发之单(多)生产者消费者线程 高并发复用数据库链接技术详解之数据库连接池 类加载器的高级特性(自定义类加器实现加密解密) iBATIS开源主流框架(实现半...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    超级有影响力霸气的Java面试题大全文档

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 13、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、...

    Java并发编程(学习笔记).xmind

    生产者-消费者模式 中断的处理策略 传递InterruptedException 恢复中断,让更高层的代码处理 PriorityQueue(非并发) ConcurrentSkipListMap 替代同步的SortedMap ...

Global site tag (gtag.js) - Google Analytics