RXBus的翻译

这篇文章是RxBus的权威文章的翻译,原文,也算是写Retrofit+RxJava学习的开端 ,在以后的博客中会陆续介绍这种框架使用的好处(可能不会连续发布)。
这篇文章有三个部分:
1.事件总线快速入门
2.用RxJava实现事件总线
3.这种方法的离别思念
“RxBus”将不会成为一个库。实现事件总线RxJava是如此容易以至于它不能作为一个独立的库。
第1部分:什么是事件总线?
让我们来谈谈两个似乎相似的概念:观察者模式和发布 - 订阅模式。
观察者模式
这是一个发展模式,借助此,你的类或主对象(被称为可观察者)利用相关信息(事件)通知其他感兴趣的类或对象(称为观察者)。
发布 - 订阅模式
发布 - 订阅模式的目标和观察者模式的目标是完全一样的,即你想要一些其他的类来了解正在发生的某些事件。
尽管如此,观察者模式和发布 - 订阅模式之间存在一个重要的语义差别:发布 - 订阅模式的重点是外界“广播”的消息。观察者并不关注事件传给谁,而只关注事件是否已经传出。换句话说,观察者(发布者)并不关注谁是观察员(订阅者)。
为什么匿名?
它允许这个东西叫做“脱钩”,这是计算机编程具有良好的口碑。在设计中,你想尽可能的保持低耦合。
通常情况下,你会期望发布者对每个它需要通知的用户有直接的了解,所以当事件或消息已准备就绪时,它可以去通知他们每个人。但随着事件的总线的出现,发布者被解除该任务,并且这种独立性有所帮助,因为发布者和订阅者不必有建立两者之间相关性的逻辑代码。
换句话说“自觉低耦论”是你的代码在书写时就应该所思考的,这是程序员应该有的水平。
如何匿名?
在发布 - 订阅模式中一个很自然的问题是:你如何真正地实现发布者和订阅者之间的匿名?一个简单的方法是得到一个中间人,让那个中间人负责所有的通信。而事件总线就是这样的一个中间人。
事件总线就是这么简单。
常用于Android的使用的两个事件总线库是otto和EventBus。网上有大量的帖子解释如何在你的手机应用程序中实现它们。
第2部分:用总线RxJava实现事件(??是“在”还是“用”)
我已经将使用Android上RxJava的显示世界的例子粘贴在这个GitHub库上,所以我会坚持展示其完整的实现方式。下面是执行的部分代码:

// this is the middleman object
public class RxBus {

  private final Subject<Object, Object> _bus = new SerializedSubject<>(PublishSubject.create());

  public void send(Object o) {
    _bus.onNext(o);
  }

  public Observable<Object> toObserverable() {
    return _bus;
  }
}

你现在有一个事件总线可以使用了。
这是你如何将事件发布到总线:

@OnClick(R.id.btn_demo_rxbus_tap)
public void onTapButtonClicked() {

    _rxBus.send(new TapEvent());
}

这是你如何倾听来自其他片段/服务等。

_rxBus.toObserverable()
    .subscribe(new Action1<Object>() {
      @Override
      public void call(Object event) {

        if(event instanceof TapEvent) {
          _showTapText();

        }else if(event instanceof SomeOtherEvent) {
          _doSomethingElse();
        }
      }
    });

在这个例子中,我们后从顶部片段(绿色部分)的事件,并从底部片段(蓝色部分)中(通过总线)收听。
在下面这个例子中,我们从顶部片段(绿色方)发布事件,并从底部片段(蓝色部分)收听(通过事件总线)。
第3部分 - 离别的思念
死亡事件
在一些情况下,知道是否有观察者监听当前总线是非常有用的。比如,如果你使用事件总线来处理你的GCM推送通知),如果应用程序是在前台 ,此时你不希望发送推送通知,这时,监听“死亡事件”是非常重要的。
例如,在不久前发布的婚礼派对,我们增加了“信息”到我们的应用程序。如果用户的应用程序开启(因而具有至少一个或更多的听众到总线),我们不会发送推送通知,但如果他们的应用程序在后台,那么我们发送推送通知,让他们知道聊天信息。当一个事件被发布到事件总线后,如果没有用户在听,会返回一个死亡事件。如果我们得到一个死亡事件,推送通知的将被发送出去。
你将怎样利用RxBus来实现呢?
事实上,这很容易。受试者有一个有用的方法hasObservers,这将准确的告诉我们实现方式。这被添加RxJava的1.x release 中,所以你必须要安装RxAndroid的最新版本才能看到这种方法(0.23.0)。
如果你只是想在Andr​​oid应用程序中使用事件总线,你可能最好使用otto(强烈推荐)或EventBus库 。Otto有一个由注解推动的干净的API,可能更为简单易用。

虽然这篇文章写得很好,翻译的不好,以下的博客将会介绍EventBus的一般使用和RXJava及RxBus的使用。

内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值和相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模型的具体步骤,包括创建新模型、添加电源和负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压和电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性与电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模型,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过图形化的方式展示无功补偿的效果,便于进一步的学习与研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值