package event;
import java.util.Vector;
public class A {
private Vector aListeners = new Vector();
private int value;
public int getValue() {
return value;
}
public void setValue(int newValue) {
if (value != newValue) {
value = newValue;
AEvent evt = new AEvent(this, value);
// 如果值改变的话,就触发事件
fireAEvent(evt);
}
}
public synchronized void addAListener(AListener a) {
aListeners.addElement(a);
}
public synchronized void removeAListener(AListener a) {
aListeners.removeElement(a);
}
public void fireAEvent(AEvent evt) {
Vector currentListeners = null;
synchronized (this) {
currentListeners = (Vector) aListeners.clone();
}
for (int i = 0; i < currentListeners.size(); i++) {
AListener listener = (AListener) currentListeners.elementAt(i);
listener.performed(evt);
}
}
public static void main(String[] args) {
A a = new A();
AListener aL1 = new AListenerImpl();
AListener aL2 = new AListenerImpl();
a.addAListener(aL1);
a.addAListener(aL2);
a.setValue(123);
a.setValue(1234);
}
}
package event;
import java.util.EventObject;
//定义事件
public class AEvent extends EventObject {
private int value;
public AEvent(Object source) {
super(source);
}
public AEvent(Object source, int newValue) {
super(source);
setValue(newValue);
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
package event;
//定义接口,当事件触发时调用
public interface AListener extends java.util.EventListener {
public abstract void performed(AEvent e);
}
package event;
public class AListenerImpl implements AListener {
@Override
public void performed(AEvent e) {
// 要处理的
System.out.println("e.getValue():" + e.getValue());
}
}