Observer vs. Pub-Sub Pattern in JavaScript
Observer vs. Pub-Sub Pattern in JavaScript
Both Observer and Publisher-Subscriber (Pub-Sub) are design patterns used for
managing event-driven architectures. They allow different parts of an application
to communicate without being tightly coupled.
🔹 1. Observer Pattern
📌 What is it?
The Observer Pattern defines a one-to-many relationship where multiple
observers (subscribers) watch a subject (publisher) and get notified when a
state change occurs.
📌 How It Works?
class Subject {
constructor() {
attach(observer) {
detach(observer) {
notify(data) {
}
// Observer
class Observer {
constructor(name) {
this.name = name;
update(data) {
// Usage
subject.attach(observer1);
subject.attach(observer2);
subject.notify("Event Triggered!");
✅ Use Cases:
Notification systems.
📌 What is it?
The Pub-Sub Pattern introduces an intermediary Event Bus (Message Broker)
that decouples publishers and subscribers.
Subscribers listen for specific events and execute actions when they occur.
📌 How is it different from Observer?
In Pub-Sub, the publisher & subscriber never know about each other—they
communicate via a third-party event bus.
class PubSub {
constructor() {
subscribe(eventName, callback) {
if (!this.events[eventName]) {
this.events[eventName].push(callback);
unsubscribe(eventName, callback) {
if (this.events[eventName]) {
publish(eventName, data) {
if (this.events[eventName]) {
// Usage
function subscriber2(data) {
eventBus.subscribe("news", subscriber1);
eventBus.subscribe("news", subscriber2);
✅ Use Cases:
🚀 Conclusion
✅ Use Observer Pattern when objects need to directly listen for updates
(e.g., UI changes).