基于事件的系统可以提高系统的灵活性,降低系统的耦合度,辅以并发技术的合理使用,可以提高性能。
基于事件的系统可以用于异构系统之间的业务整合。
基于事件的系统可以实现松耦合条件下,代码和业务逻辑的高度复用,提高系统的弹性。
LoginEventNotifier和LoginEventListener 无需知道注册服务和对方的存在,只需要做自己的事情。
Notifier在产生通知的时候发送通知即可。
Listener在接到通知处理通知即可。在使用时,可以根据需要注册和注销listener。
事例代码:
package org.teamlet.notifies;
import org.teamlet.base.AbstractEventNotifier;
import org.teamlet.event.UserLoginEvent;
public class LoginEventNotifier extends AbstractEventNotifier {
public void fire() {
UserLoginEvent event = new UserLoginEvent(this);
fireAEvent(event);
}
}
package org.teamlet.listener;
import java.util.EventObject;
import org.teamlet.base.AbstractEventListener;
import org.teamlet.event.UserLoginEvent;
public class LoginEventListener extends AbstractEventListener {
public void registe() {
this.registe(this);
}
public void unRegiste() {
this.unRegiste(this);
}
@Override
public void performed(EventObject e) {
if (e instanceof UserLoginEvent) {
System.out.println("*** UserLoginEvent is performed ! ");
}
}
}
package org.teamlet;
import org.teamlet.listener.LoginEventListener;
import org.teamlet.notifies.LoginEventNotifier;
public class Main {
public static void main(String[] args) {
new LoginEventListener().registe();
LoginEventNotifier lep = new LoginEventNotifier();
lep.fire();
}
}