Guava - EventBus(事件总线)】的更多相关文章

Guava在guava-libraries中为我们提供了事件总线EventBus库,它是事件发布订阅模式的实现,让我们能在领域驱动设计(DDD)中以事件的弱引用本质对我们的模块和领域边界很好的解耦设计. 不再多的废话,直奔Guava EventBus主题.首先Guava为我们提供了同步事件EventBus和异步实现AsyncEventBus两个事件总线,他们都不是单例的,官方理由是并不想我们我们的使用方式.当然如果我们想其为单例,我们可以很容易封装它,一个单例模式保证只创建一个实例就对了. 下面…
EventBus(事件总线) Guava在guava-libraries中为我们提供了事件总线EventBus库,它是事件发布订阅模式的实现,让我们能在领域驱动设计(DDD)中以事件的弱引用本质对我们的模块和领域边界很好的解耦设计. 不再多的废话,直奔Guava EventBus主题.首先Guava为我们提供了同步事件EventBus和异步实现AsyncEventBus两个事件总线,他们都不是单例的,官方理由是并不想我们我们的使用方式.当然如果我们想其为单例,我们可以很容易封装它,一个单例模式保…
你听过onClick 事件,onItemClick 事件,事件总线不一定听过吧, eventbus 事件总线也是一个编程思想,为什么要设计EventBus了,因为他是领域驱动设计中比不可少的模块,它承担传输数据的作用,它可以解耦模块之间的耦合性. 在Android开发过程中,我们总会遇到各个组件模块之间的通信,当功能点越来越多的时候,组件间的通信难免会变得混乱 我们还是用事例说明为什么要用eventbus 假设你有A,B,C,D,E,F几个页面, A 是列表,A->B,或者A->C B->…
EventBus事件总线的使用-自己实现事件总线   在C#中,我们可以在一个类中定义自己的事件,而其他的类可以订阅该事件,当某些事情发生时,可以通知到该类.这对于桌面应用或者独立的windows服务来说是非常有用的.但对于一个web应用来说是有点问题的,因为对象都是在web请求中创建的,而且这些对象生命周期都很短,因而注册某些类的事件是很困难的.此外,注册其他类的事件会使得类紧耦合.事件总线便可以用来解耦并重复利用应用中的逻辑. 事件总线带来的好处和引入的问题 好处比较明显,就是独立出一个发布…
简介 地址:https://github.com/greenrobot/EventBus EventBus是一个[发布 / 订阅]的事件总线.简单点说,就是两人[约定]好怎么通信,一人发布消息,另外一个约定好的人立马接收到你发的消息. EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息. 优点:开销小,代码更优雅,将发送者和接收者解耦. 用处:相信大…
在C#中,我们可以在一个类中定义自己的事件,而其他的类可以订阅该事件,当某些事情发生时,可以通知到该类.这对于桌面应用或者独立的windows服务来说是非常有用的.但对于一个web应用来说是有点问题的,因为对象都是在web请求中创建的,而且这些对象生命周期都很短,因而注册某些类的事件是很困难的.此外,注册其他类的事件会使得类紧耦合.事件总线便可以用来解耦并重复利用应用中的逻辑. 事件总线带来的好处和引入的问题 好处比较明显,就是独立出一个发布订阅模块,调用者可以通过使用这个模块,屏蔽一些线程切换…
介绍 GitHub:https://github.com/greenrobot/EventBus 先聊聊EventBus 线程总线是干什么的,使用环境,优点.缺点. 干什么的? 一句话,简单统一数据传递 和 提供主次多个线程 数据传递:Android系统有很多类别的数据传递方式,例如Intent 活动之间传递数据.Message与Handler 主次线程之间传递数据.广播的方式.使用基类危险的去传递数据.传递数据的方式太多,且都需要各自的注册方式,使用使用起来比较繁琐.所以EventBus第一个…
事件总线: public interface IEventBus { void Trigger<TEvent>(TEvent eventData, string topic = null) where TEvent : IEvent; } public class EventBus : IEventBus { private static System.Collections.Concurrent.ConcurrentDictionary<Type, EvnetHandlerMetada…
用例:假设公司发布了一个公告 需要通过短信 和 邮件分别2种方式 通知员工 1:首先我们建立领域模型 /// <summary> /// 领域核心基类 /// </summary> public abstract class Core { public string Id { set; get; } = Guid.NewGuid().ToString(); } public interface ICore { } 2:消息模型 /// <summary> /// 通知的…
事件总线接口定义: public interface IEventBus : IDependency { IEnumerable Notify(string messageName, IDictionary<string, object> eventData); } messageName 参数说明 : _eventBus.Notify(interfaceName + "." + methodName, data/*接口方法参数*/); 事件总线作用: 当调用Notify时…