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ả :
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 )
Source: https://final-blade.com
Category : Kiến thức Internet