软件产品的终极目标是松耦合,很多技术的出现都是为解决耦合问题,比如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编译好的包:
- 大小: 26.2 KB
分享到:
相关推荐
"安卓LEB双开大师"是一款专为安卓用户设计的应用程序,主要功能是实现手机上的应用多开。这款软件的独特之处在于它能够帮助用户在同一台设备上同时运行两个相同的应用,比如微信和QQ,实现了所谓的“双开”功能。这...
安卓手机系统 Leb安全专家 防火墙 流量控制 病毒查杀
手机版LEB安全大师安卓版基于业界首创的API拦截技术,能够实时监控与拦截系统中的敏感操作,动态拦截来自已知和未知的各种威胁。避免各类吸费软件,广告软件乃至木马病毒窃取您手机内的隐私信息以及可能产生的经济...
COSEL科索LEB100F/150F/225F系列模块电源是该公司生产的具有高可靠性和高效能的电源产品。这一系列模块电源能够满足不同的工业和商业应用需求,下面详细说明其特点和技术参数。 1. 产品系列说明 COSEL科索LEB100F/...
在电子工程领域,学习板(LEB)是用于教学和实验目的的小型电路板,它通常包含各种电子元件,如微控制器、LED指示灯、按键等。本项目名为"leb.rar_leb指示灯_按键 长 短",主要涉及的是利用编程技术控制LEB上的LED...
**nom-leb128:快速LEB128解码在Rust解析器组合器框架中的应用** LEB128(Little Endian Base 128)是一种编码方式,常用于存储紧凑且可变长度的整数值,特别是在Google的Protocol Buffers、WebAssembly和其他数据...
资源分类:Python库 所属语言:Python 资源全名:leb128-1.0.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
在本案例中,"leb-driver.zip_led driver" 提供的是一款驱动程序,能够支持驱动10到12个串联的LED,并且具备调光功能。文件"leb driver.ms12"可能是该LED驱动器的详细数据或配置文档。 首先,我们来了解一下LED驱动...
"FirePHP.class_05leb0_FirePHP_" 提供了一种高效的方法来实现这一目标。这个命名可能暗示着它是一个实现了FirePHP接口的类,FirePHP是一个流行的PHP调试工具,它允许开发者通过Firefox浏览器的Firebug扩展来查看PHP...
这是一篇为内政的毕业论文,可供热爱电子的人做参考
"leb_data_viz"项目看起来是一个数据可视化相关的项目,主要使用JavaScript编程语言。在这个项目中,我们可能涉及以下几个核心知识点: 1. **JavaScript**: JavaScript是互联网上最常用的客户端脚本语言,用于增强...
资源分类:Python库 所属语言:Python 资源全名:lebai-0.5.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
LBE安全大师
《Leb-bed:Web界面与红外遥控控制床的照明系统》 在当今智能家居的时代,个性化与智能化的生活体验已经成为人们追求的新风尚。"Leb-bed"项目正是这一趋势下的创新实践,它提供了一种独特的方式,让用户能够通过Web...
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是美国国家仪器公司(NI)开发的一款图形化编程环境,专门用于创建虚拟仪器。它通过图形化编程语言G(G Language)来实现,使得用户可以通过拖拽和...
在当今的IT产业中,电子硬件与软件的结合以及开源技术的广泛应用成为了推动技术进步的重要力量。从给定的文件内容中,我们可以提炼出关于3D电视单芯片解决方案、开源Linux平台的建立、外包服务模式、以及网络运营...
- `bus`: 数据总线,用于在各部件间传输数据。 3. **输出信号**: - `reg_sel`: 寄存器选择信号,用于指定要读取或写入的寄存器。 - `reg_out`: 寄存器输出数据。 - `FZ`: 结果为零标志。 - `FC`: 进位标志。 ...
由于提供的文件内容是有关美国Piezofilm公司制造的压电薄膜传感器金属化压电薄膜片的产品介绍,因此我们将着重于该领域中相关知识点的解释与阐述。 首先,压电薄膜传感器是利用压电材料的压电效应来感应机械应力并...
DKZ模块具有一个4行每行16字符的显示屏,通过两个按钮进行操作:左侧按钮(leB)用于进入下一个菜单;右侧按钮(riB)则可进入关联的子菜单。此外,通过旁边的两个编码开关设置DKZ在现场总线上的地址。 DKZ系统支持...