Build a Plugin-Based Notification Framework With Observer + Factory
Overview
What this challenge is about.
Implement, in Java 21: an EventBus that supports typed subscriptions, a NotificationChannel interface with concrete subtypes (Push, Email, InApp, SMS), an AbstractChannelFactory that instantiates channels per user-preference profile, and 4 event-type-to-channel default mappings. Add user-level overrides (a user can mute SMS but keep Push). Demonstrate adding a 5th channel (WhatsApp) without modifying the bus. Provide fakes for all 4 channels for tests. Deliver: code + Maven project, JUnit 5 suite with 85 percent coverage, 5-page design doc with UML, and a walkthrough adding the WhatsApp channel.
The Brief
What you'll do, and what you'll demonstrate.
Build a plugin-based notification framework using Observer and Abstract Factory that supports adding new channels without modifying core code.
Earning criteria — what you'll demonstrate
- Implement Observer with typed subscriptions in modern Java
- Apply Abstract Factory for per-profile channel instantiation
- Design for Open/Closed by registration, not modification
- Build fakes that let tests run without external dependencies
Program Fit
Where this fits in your program.
Sharpens the same skills your degree expects you to demonstrate.
Skills
Skills you'll demonstrate.
Each one shows up on your verified credential.
Careers
Roles this prepares you for.
Real titles. Real skill bridges. Pick the one closest to your trajectory.
Career mappings coming soon.