Design the classes for a notification service that sends email, SMS and push. Which design patterns earn their place, and which would you leave out?
Name what varies first: channel, text, the user's channel choices and retry. A notification service then needs a channel interface (a strategy) picked from a registry, templates as data, a preference policy and a retry policy splitting transient from permanent errors. Most other design patterns add classes, not value.