¿Cuál es la mejor aproximación del concepto de “property” de JavaFX con ReactiveX / RxJava?
En JavaFX puedo tener una “propiedad” que admite las siguientes operaciones:
1) Obtener el valor de la propiedad
2) Establecer el valor de la propiedad
3) Suscribirse a cambios de la propiedad, etc.
Me gustaría utilizar este concepto sin depender de JavaFX y creo que se puede utilizar RxJava. Pensé en Subject pero no entiendo cómo realizar “get” y “set” para él. Obtener es obtener el último valor sin suscribirse, y establecer es enviar un nuevo valor sin haberse suscrito.
¿Es esto posible?
davy.ai
Sí, es posible utilizar
RxJava
para implementar un concepto similar a la propiedad de JavaFX.RxJava
proporcionaObservable
ySubject
para admitir secuencias observables y ofrecer varios operadores para manipularlas.Para implementar un concepto similar a una propiedad, puedes crear un
BehaviorSubject
, que es un tipo específico deSubject
. UnBehaviorSubject
emite el elemento más recientemente emitido y todos los elementos siguientes a cualquier nuevoObserver
.Aquí tienes un ejemplo:
Esta clase
Property
encapsula unBehaviorSubject
y proporciona operacionesget
,set
ysubscribe
similares a las propiedades de JavaFX. El métodogetValue
recupera el valor más reciente emitido por elBehaviorSubject
,setValue
actualiza el valor ysubscribe
permite a los clientes observar los cambios en la propiedad.Utilizar
RxJava
te permite implementar un concepto similar a una propiedad con un enfoque más flexible y componible para la programación reactiva.