java listener 与 观察者模式入门

监听器在java中十分重要,在android开发中,每个组件都有各种各样的listener,像常见的onClickListener

结合看了几篇文章,自己试着写了一个listener的小测试

测试模拟有一个一对多的打电话对象,当对象打电话,对他监听的人都能收到他打电话的信息

首先是打电话和监听类的接口

interface iCall{
	void call();
}
interface iCall_listener {
	void respond(String name);
}

接着是是基本的Person类,很简单,只有一个name变量

class Person {
	String name;

	public Person(String name) {
		// TODO Auto-generated constructor stub
		this.name = name;
	}

}

然后就是打电话的人

class Caller extends Person implements iCall{

	iCall_listener call_listener;
	ArrayList<iCall_listener> call_listeners = new ArrayList<iCall_listener>();

	public Caller(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}

	public void add_listener(iCall_listener call_listener) {
		// TODO Auto-generated method stub
		call_listeners.add(call_listener);
	}

	public void call() {
		new Thread(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				try {
					Thread.sleep(3000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				System.out.println(name + " makes a call");
				for (iCall_listener call_listener : call_listeners) {
					call_listener.respond(name);
				}
			}
		}).start();
	}

}

arraylist让我们可以添加多个多种实现了iCall_listener接口的类对象

例如我现在让张三打电话,普通人李四王五能够接到张三的电话,

时间: 2024-10-07 11:18:42

java listener 与 观察者模式入门的相关文章

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

Observer Pattern 是一种常用的设计模式,它是一种事件监听模型.该模式有两个角色,一个是Subject, 另一个是Observer.Subject 保存有多个Observer的引用,一旦特定的事件发生,Subject会通知它所有的Observer,Observer得到该通知后执行相关程序逻辑.其中,Observer只有先向Subject注册后才能被Subject知晓.这就像订报纸,只有我们向出版社提出订报的申请,出版社才会把我们列入订阅者名单,然后每当新报纸印好时,出版社会通知订阅

java设计模式之观察者模式以及在java中作用

观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependents)模式. 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 推模型和拉模型 在观察者模式中,又分为推模型和拉模型两种方式. ● 推模型 主题对象向观察者推送主题的详细信息,不管观察者是否需

Java使用Protocol Buffers入门四步骤

Protocol Buffers(简称protobuf)是谷歌的一项技术,用于将结构化的数据序列化.反序列化,经常用于网络传输. 这货实际上类似于XML生成和解析,但protobuf的效率高于XML,不过protobuf生成的是字节码,可读性比XML差.类似的还有json.Java的Serializable等. protobuf支持各种语言.本文以Java为例,简单介绍protobuf如何使用.其他语言使用方法类似. 首先需要下载: http://download.csdn.net/downlo

java设计模式02观察者模式

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 这里主要讲一下学习内置观察者的记录,在JAVA语言的java.util库里面,提供了一个Observable类以及一个Observer接口,构成JAVA语言对观察者模式的支持. Observer接口 这个接口只定义了一个方法,即update()方法,当被观察者对象的状态发生变化时,被观察者对象的notifyObservers()方法就会调用

java htmlparser 简单使用入门

请尊重本人的工作成果,转载请留言,并说明转载地址,谢谢.地址如下: http://blog.csdn.net/fukainankai/article/details/27710883 前几节中,我们利用GDI+在窗口中绘制了各种各样的图形.图像,这一节,我们将会将这些图像保存成简单图像.所谓简单图像,指的是bmp/jpg/png等图像或者单帧的gif图像.保存成多帧的gif图像稍微复杂一点,本节中暂时不做说明.保存成动态的tiff文件也比较简单,但这里也不做说明,下次有机会和gif一起介绍. 另

Java网络编程从入门到精通(4):DNS缓存

在通过DNS查找域名的过程中,可能会经过多台中间DNS服务器才能找到指定的域名,因此,在DNS服务器上查找域名是非常昂贵的操作.在Java中为了缓解这个问题,提供了DNS缓存.当InetAddress类第一次使用某个域名(如www.csdn.net)创建InetAddress对象后,JVM就会将这个域名和它从DNS上获得的信息(如IP地址)都保存在DNS缓存中.当下一次InetAddress类再使用这个域名时,就直接从DNS缓存里获得所需的信息,而无需再访问DNS服务器. DNS缓存在默认时将永

Java的多线程 简单入门

Java的多线程 简单入门 首先可以先搞清楚什么是程序.进程.线程,以及它们之间的关系: 定义: 一 程序只是一组指令的有序集合,它是静态的 二 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位: 三 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程: 进程与线程区别与联系 (

java的String类入门

java的String类入门 1. 概述 只要是用双引号括起来的都叫字符串 String类在包java.lang.String中,只要是java.lang中的包,在写程序时都不需要import进来 字符串的内容一旦创建,将不可再改变,是一个常量 正是因为字符串不可改变,所以字符串是可以共享使用的.想想如果共享的东西大家可以随便修改,用一次残一次,谁还想去共享呀,想想都恶心,共享单车大家都可以用,就代表用的时候可以随便糟蹋它,拆它??? 字符串效果上相当于是char[]字符数组,但是底层原理是by

Java Listener

六.  Java Listener 1.  Java Listener 简介 * Java Listener 1. Java Listener(即:Java 监听器):用于监听 ServletRequest.HttpSession.ServletContext 作用域对象的创建.销毁.及其属性修改变化 2. 在 Web 项目中可以有多个 Java 监听器 3. 应用场景: a.统计在线人数 b.统计页面访问量 c.服务器加载时数据初始化 * Listener 的使用 1. 在 web.xml 中