服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

notifier类实现event/listener更容易


  event/listener模式在java中很常见,并且很有用,但要自己来实现这个模式是一件很费时间并且单调乏味的工作。每次你都不得不和list或vector打交道,每次你都不得不处理add方法、remove方法,然后你还得遍历整个列表来通知所有的监听者,这才算完。

如果能象下面这样简单就好了:

notifier notifier = new notifier("actionperformed");
...
notifier.addlistener( someobject );
...
notifier.notify( new actionevent(this) );
只要几行代码就能够完成一切。

下面的notifier类就达到了这个目的:

package com.generationjava.lang;

import java.util.*;
import java.lang.reflect.*;

public class notifier {

private arraylist listeners = new arraylist();
private string listenermethod;

public notifier(string name) {
this.listenermethod = name;
}

public void addlistener(object not) {
this.listeners.add(not);
}
public void removelistener(object not) {
this.listeners.remove(not);
}

public void notify(eventobject event) {
iterator itr = listeners.iterator();
while(itr.hasnext()) {
try {
object listener = itr.next();
class clss = listener.getclass();
method method = clss.getmethod(
this.listenermethod,
new class[] { event.getclass() }
);
method.invoke( listener, new object[] { event } );
} catch(exception e) {
e.printstacktrace();
}
}
}
}

这个类并没有经过性能上的优化,而且它是不同步的,但在编写一组event/listener api的时候,可以很快掌握它并且节省时间。利用notifier类,你就能执行这样一个常见的任务而不必每次都为之编写代码。




摘自:zdnet   时间:2003年9月10日

扫描关注微信公众号