开源事件总线框架Leb event bus

软件产品的终极目标是松耦合,很多技术的出现都是为解决耦合问题,比如IoC,AOP,观察者模式,面向接口编程,MVC等,事件驱动架构EDA(Event-Driven Architecture)也是。 事件总线(event bus)的本质是观察者模式。其优点有:解耦,依赖反转,反转控制,好莱坞原则;高性能,天生多线程;易维护,随时增加修改;符合自然思维,一件事情发生引发另一件事。

Leb是一个极其轻量级的event bus框架,简单易用,下面的这个HelloWorld基本概括了leb的全部用法,够简单吧。

Say.java
public class Say {
@Observe(hint = "say")
public void sayHello() {
Logs.p("hello leb");
}
@Observe(hint = "say")
public void sayTo(String who) {
Logs.p("hello " + who);
}
@Observe
public void bye() {
Logs.p("bye leb");
}
@Observe(hint = "say")
public void sayTime(Date date) {
Logs.p(Times.format(date));
}
}

如下是测试代码:

Lebs leb = Lebs.singleton();
leb.observers(new Say());

leb.notice("say");// hello leb
leb.notice("say", "bruce");// hello bruce
leb.notice("bye");// bye leb
leb.notice("say", new Date());// 2013-05-19 13:53:16.016
leb.broadcast("say", 1);// 不执行任何方法,没有匹配上的参数

Say.java是一个普通的POJO,并在相应的监听方法上加上@Observe注解。将Say的实例注册到Lebs中,之后便可以通过总线发送消息,相应的@Observe便会处理。
在后续的版本中,将提供与guice和spring的集成,下图是Leb的架构,非常简单。

Leb架构

源代码:
Github Leb http://github.com/bruce-sha/leb
Github Sardine http://github.com/bruce-sha/sardine

评论