基于事件的系统可以提高系统的灵活性,降低系统的耦合度,辅以并发技术的合理使用,可以提高性能。
基于事件的系统可以用于异构系统之间的业务整合。
基于事件的系统可以实现松耦合条件下,代码和业务逻辑的高度复用,提高系统的弹性。
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(); } }