اگر برای یک کلاس می خواهید رویداد تعریف کنید من پیشنهاد می کنم از الگوی طراحی Observer استفاده کنید که در جاوا بصورت توکار ازش پشتیبانی میشه:
ابتدا باید کلاسی که قرار است رویداد درون آن اتفاق بیوفتد کلاس java.util.Observable را extends کند:
import java.util.Observable;
public class Customer extends Observable{
private String name;
public void setName(String name) {
setChanged();
notifyObservers(name);
this.name = name;
}
public String getName() {
return name;
}
}
در کلاس بالا در صورتی که برای یک شئ Customer نام جدید set شود، تمام کسانی که برای این رویداد handler تنظیم کرده اند باخبر می شوند، حالا هر کسی که می خواهد از رویداد تغییر نام باخبر شود باید با استفاده از متد addObserver کلاس Customer کلاس handler مورد خود را register کند.
import java.util.Observable;
public class Observer {
public static void main(String[] args) {
Customer customer = new Customer();
customer.addObserver(new java.util.Observer() {
@Override
public void update(Observable o, Object arg) {
if (arg instanceof String) {
String name = (String) arg;
System.out.println("Customer name changed = "+name);
}
}
});
customer.setName("Saeed");
}
}