WEB开发网
开发学院WEB开发Jsp Notifier类实现Event/Listener更容易 阅读

Notifier类实现Event/Listener更容易

 2008-01-05 08:56:27 来源:WEB开发网   
核心提示:Event/Listener模式在java中很常见,并且很有用,Notifier类实现Event/Listener更容易,但要自己来实现这个模式是一件很费时间并且单调乏味的工作,每次你都不得不和List或Vector打交道,可以很快把握它并且节省时间,利用Notifier类,每次你都不得不处理Add方法、Remove方

  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日

Tags:Notifier 实现 Event

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接