Giới thiệu về Reactive Programming với RxJava – Hướng Dẫn Java

Reactive Programming là một quy mô lập trình mà ở đó bất kể sự biến hóa nào trên đối tượng người tiêu dùng có những đối tượng người tiêu dùng khác tham chiếu tới thì những đối tượng người tiêu dùng tham chiếu tới đó đều phân biệt sự đổi khác của đối tượng người dùng đó .Một ví dụ nổi bật mà những bạn nếu điều tra và nghiên cứu về Reactive Programming trên mạng sẽ gặp đó là :

Nếu mình có biến a là tổng của 2 số b và c, thì bất kỳ sự thay đổi nào của biến b và biến c đều làm thay đổi giá trị của biến a.

Trong những quy mô lập trình khác thì mặc dầu a là tổng của b và c nhưng khi tất cả chúng ta đổi khác b hoặc c thì giá trị của a vẫn không đổi khác theo. Ví dụ như :

12345678910111213

packagecom.huongdanjava.example;

publicclassExample{

publicstaticvoidmain(String[]args){

intb=2;

intc=3;

inta=b+c;

System.out.println(” Before changing b, a = “+a);

b=5;

System.out.println(” After changing b, a = “+a);

}

}

Kết quả :

Giới thiệu về Reactive Programming với RxJava

Với Reactive Programming thì giá trị của a, sau khi thay đối giá trị của b, sẽ đổi khác. Thay đổi như thế nào thì những bạn đọc tiếp nhé ! Nhưng thứ nhất, mình cần trình diễn với những bạn một số ít khái niệm trong Reactive Programming mà những bạn cần phải biết .

  • Đầu tiên là khái niệm Publisher, là đối tượng sẽ có sự thay đổi giá trị.

Trong ví dụ trên thì b hoặc c chính là những đối tượng người dùng Publisher .

  • Thứ hai là khái niệm Subscriber, đây chính là những đối tượng sẽ nhận sự thay đổi từ các đối tượng Publisher.

Trong ví dụ trên thì a chính là một đối tượng người dùng Subscriber .

  • Và khái niệm cuối cùng chính là Subscribe, chính là phần kết nối giữa Publisher và Subscriber để Publisher có thể thông báo sự thay đổi đến Subscriber.

Để minh họa cho quy mô Reactive Programming, mình sẽ viết lại ví dụ trên và sử dụng thư viện RxJava ( Reactive Extensions for the JVM ). RxJava là một thư viện dùng để tiến hành quy mô lập trình Reactive Programming trong Java với không thiếu những function giúp lập trình viên hoàn toàn có thể tiến hành Reactive Programming một cách thuận tiện .

Nhưng thứ nhất, mình sẽ tạo một Maven project mới với RxJava dependency :Với RxJava dependency như sau :

12345

io.reactivex. rxjava2

rxjava

2.1.10

Trong thư viện RxJava thì đối tượng người dùng Observable hoặc Flowable là đại diện thay mặt cho một Publisher, còn đối tượng người tiêu dùng Consumer hoặc Subscriber là đại diện thay mặt cho Subscriber .Ở ví dụ trên của mình thì để tạo ra Publisher, mình hoàn toàn có thể khai báo như sau :

1

Observable

b=Observable.just(2,5);

Với khai báo này, đối tượng người tiêu dùng Observable sẽ tạo ra 2 giá trị là 2 và 5 và những giá trị này sẽ được cập nhập đến cho những Subscriber .Để tạo ra đối tượng người dùng Subscriber, mình sẽ sử dụng đối tượng người dùng Consumer như sau :

123456789

Consumer

consumer=newConsumer

(){

inta=0;

publicvoidaccept(Integernumber)throwsException{

a=number

+c;

System.out.println(a);

}

};

Và để liên kết Publisher và Subscriber ở trên, tất cả chúng ta sẽ sử dụng phương pháp subscribe ( ) của đối tượng người dùng Observable :

1

b.subscribe(consumer);

Khi chạy, ứng với mỗi giá trị mà Publisher phát ra, Subscriber sẽ nhận được giá trị đó và cập nhập lên biến a .Dưới đây là hàng loạt code của chương trình :

123456789101112131415161718192021222324

packagecom.huongdanjava.reactive;

importio.reactivex.Observable;

importio.reactivex.functions.Consumer;

publicclassExample{

publicstaticvoidmain(String[]args){

Observable

b=Observable.just(2,5);

finalintc=3;

Consumer

consumer=newConsumer

(){

inta=0;

publicvoidaccept(Integernumber)throwsException{

a=number+c;

System.out.println(a);

}

};

b.subscribe(consumer);

}

}

Kết quả :

5/5 – ( 2 bầu chọn )