Agera官方Wiki翻译(四)——源

正如之前Agera官方Wiki翻译(二)——响应式编程所述,源(Repository)是一个提供数据并定义在所提供数据发生变化时的事件的被观察者。

简单源

一个简单源可以使用 Repositories 类中的工具方法来进行创建。可以有如下选择:

  • 静态源(static repository)提供同样的值,并且不会产生任何事件;
  • 可变源(mutable repository)允许改变值,并且当值被更新成新值(通过 Object.equals(Object) 判断)后产生事件。

本质上说,静态源将永远提供最新数据,不论它们是否被激活。

复杂源

复杂源(complex repository)能够对其他源或被观察者(observables)做出反应,并使用内部过程从其他数据源同步或异步获取数据进行变换来产生值。这种源所提供的数据以响应数据源事件的方式保持最新,但是由于处理复杂度,源可能选择当不活动时不保持数据最新。任何需要访问数据的地方需要注册 updatable 来表示自己需要数据的意图。这样就会激活源,但是数据不过立刻更新,看到的数据仍然是旧的,知道上游源分发第一个事件。

Agera 提供了一个 repository compiler 来帮助开发者以接近自然语言的方式声明、实现复杂源。