开源事件总线框架Leb event bus

   软件产品的终极目标是松耦合,很多技术的出现都是为解决耦合问题,比如IoC,AOP,SOA,观察者模式,面向接口编程,MVC等,事件驱动架构EDA(Event-Driven Architecture)也是。
   事件总线(event bus)的本质是观察者模式。其优点有:解耦,依赖反转,反转控制,好莱坞原则;高性能,天生多线程;易维护,随时增加修改;符合自然思维,一件事情发生引发另一件事。
   Leb是一个极其轻量级的event bus框架,简单易用,下面的这个HelloWorld基本概括了leb的全部用法,够简单吧。
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的架构,非常简单。


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

JDK7编译好的包:

猜你喜欢

转载自buru.iteye.com/blog/1871833
今日推荐