Bản thân mình từng có sự nhầm lẫn giữa 2 pattern này và cứ nghĩ cả 2 cái này là 1, hôm nay viết 1 bài để anh em có ai chưa biết thì đọc nhé
Observer Pattern
Định nghĩa:
The Observer Pattern defines a one-to-many dependency between object (Subject) so that when one object changes state, all of its dependency (Observers) are notified and updated automatically.
Theo wiki
Tạm dịch là Observer Pattern tạo ra 1 mối liên 1 (Subject)-nhiều (Observers) giữa các đối tượng, mỗi khi subject thay đổi trạng thái thì các Observers sẽ được thông báo và cập nhật 1 cách tự động.
Ví dụ:
Giả sử anh em đang cần tìm việc, anh em đến trung tâm môi giới việc làm, tuy nhiên hiện tại chưa có job nào phù hợp cả. Lúc này anh em để lại phương thức liên lạc ở trung tâm và khi có job phù hợp họ sẽ thông báo cho anh em biết. Trong đó trung tâm môi giới việc làm là Subject và anh em là Observers
.
Pub-Sub (Publisher-Subscriber) Pattern
Định nghĩa:
In software architecture, publish–subscribe is a messaging pattern where senders of messages, called publishers, do not program the messages to be sent directly to specific receivers, called subscribers, but instead categorize published messages into classes without knowledge of which subscribers, if any, there may be
https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern
Tạm dịch: pub-sub là dạng của message pattern trong đó publishers là thằng gửi message, subscribers là thằng nhận message, và trong pattern này không lập trình để message được gửi trực tiếp đến subscribers, các message được phân loại và được gửi đi mà không cần quan tâm xem có subscribers nào hay không.
Chúng ta có thể hiểu: publishers và subscribers không biết sự tồn tại của nhau, thay vì gửi trực tiếp message đến subscribers thì chúng ta có thêm 1 thành phần thường được gọi là Broker hoặc Message Broker hoặc Event bus. Cả pub và sub đều biết sự tồn tại của thằng Broker này. Broker có nhiệm vụ lọc tất cả message nó nhận được và gửi nó đến những đối tượng đang subscribe.
Như trong ví dụ ở trên thì thay vì gửi trực tiếp toàn bộ thông tin tuyển dụng mà họ có đến anh em thì họ sẽ đăng tin lên 1 trang web và phân chia tin thành các topic khác nhau, mỗi topic sẽ có 1 nút subscribe, việc của anh em là lên web và subscribe topic anh em quan tâm, khi nào có tin mới thì web sẽ gửi tin nhắn hoặc email cho những ai subscribe.
Đến đây chắc anh em cũng nắm được điểm khác biệt giữa 2 pattern này và tổng kết lại bằng 1 hình bên dưới.
Message Broker c#: https://www.codeproject.com/Tips/1169118/Message-Broker-Pattern-using-Csharp
Tham khảo: https://medium.com/better-programming/observer-vs-pub-sub-pattern-50d3b27f838c