🕵️ Observer Design pattern - Crime Scene Tracker

🔍 Observer Design Pattern: The Case of the Whistling Typewriter

📘 Scenario:

In foggy Victorian London, Detective Marlowe is investigating eerie clues left by a ghost typing on an old typewriter in an abandoned manor. Every time a new message appears, a trio of experts instantly react:

The typewriter acts as the Subject, and all three specialists are Observers that respond automatically whenever a new clue is typed.

⚠️ Problem:

💡 Observer Pattern Solution:

The typewriter implements a Subject interface, allowing observers to subscribe() and unsubscribe() dynamically. Each observer implements an Observer interface and reacts to updates in its own unique way. The Subject notifies all registered observers whenever a clue appears—promoting loose coupling and extensibility.

Observer Design Pattern UML Diagram

🖥️ Output:


[CrimeScene] New clue discovered: "MURDER AT MIDNIGHT"
🧪 ForensicAnalyst: Dusting the keys for prints on clue → MURDER AT MIDNIGHT
🔮 PsychicMedium: I hear whispers chanting 'MURDER AT MIDNIGHT'!
💻 TechGeek: Arduino logged keystroke sequence: [MURDER AT MIDNIGHT]

[CrimeScene] New clue discovered: "LOOK UNDER THE FLOORBOARD"
🧪 ForensicAnalyst: Dusting the keys for prints on clue → LOOK UNDER THE FLOORBOARD
🔮 PsychicMedium: I hear whispers chanting 'LOOK UNDER THE FLOORBOARD'!
💻 TechGeek: Arduino logged keystroke sequence: [LOOK UNDER THE FLOORBOARD]

[CrimeScene] New clue discovered: "THE BUTLER DID IT"
🧪 ForensicAnalyst: Dusting the keys for prints on clue → THE BUTLER DID IT
🔮 PsychicMedium: I hear whispers chanting 'THE BUTLER DID IT'!
💻 TechGeek: Arduino logged keystroke sequence: [THE BUTLER DID IT]
     
🔗 View Code on GitHub
Sherlock Holmes

Clue Discovery Panel

[CrimeScene] Awaiting clues...