An order that must notify email, SMS and analytics code directly ends up knowing about all of them, and every new listener means editing it. Observer lets the subject keep a list of subscribers and notify them when something changes, without knowing their concrete classes. Use it for notifications, "tell me when it is back in stock" and event listeners in UI code. Watch out for listeners that are never removed and slow ones blocking the subject; across services, a message queue plays this role instead.