Tình hình mình đang tìm hiểu thằng observer thì thấy nó khá giống với callback, khác mỗi cái observer nó bắn được nhiều thằng, callback chỉ dc 1 thì phải, ai khai sáng e với ạ, thanks mn
Observer pattern với dùng interface làm callback thì khác gì nhau?
Callback chỉ được 1 á? SAI!
Thích làm nhiều vẫn được, nhưng hầu hết các sự kiện trong Java
toàn setListener()
chứ không phải addListener()
, tùy biến thì nó thêm nhiều được thôi.
Observer (Kẻ quan sát): chuyên theo dõi dữ liệu (trường - biến) của đối tượng khác, khi có thay đổi thì “báo cáo”. Chủ động theo dõi.
Callback Interface (Giao tiếp gọi lại): dành cho chính đối tượng nào gọi khi nó muốn. Chủ động gọi.
callback thì mình hiểu r, còn thằng observer vẫn chưa hiểu lắm, mình thấy nó khá giống vs callback mà nhỉ
Bạn đọc thêm các bài về rxjava để hiểu thêm các khái niệm trong reactive programming
Câu hỏi rất hay, mình xin phép bổ sung ý kiến:
Hai Pattern hơi tương tự, vì cả hai đều gọi đến một hay nhiều Object một cách asynchronously, nhưng mà theo mình thì hai Pattern này được áp dụng trong tình hình khác nhau.
Callback: Thằng Caller gọi một asynchronous Operation và muốn được thông báo chừng nào Operation hoàn thành.
Ví dụ: Mình bắt đầu dowload một file bự, và nói với Method Download rằng: “Chừng nào mày xong mày thông báo tao thông qua Method này nhé!”
Observer: Ở trong lifecycle của thằng Observable có những sự kiện thú vị, và thằng observable sẽ thông báo những sự kiện đó cho bất kỳ ai quan tâm (những thằng Observer).
Ví dụ: Trong Webshop của mình có Object “ShoppingCart”, mỗi lần khách hàng add item vào thì ShoppingCart sẽ thông báo với danh sách “cartItemAddedObservers”. Mỗi lần khách hàng xóa item thì shoppingCart sẽ thông báo với danh sách “cartItemRemovedObservers”.
theo mình tìm hiểu thì callback nó chính là observer, có phải vậy ko b nhỉ
Không! Khác nhau đấy. Như mình giải thích:
Observer là design pattern.
Callback là interface chỉ có 1 method.
2 khái niệm thuộc 2 phạm trù khác nhau thì so sánh thế nào được. :v