Defer object creation to a factory function so calling code depends on an interface, never on concrete classes.
Implement `createNotification(type)`, returning an EmailNotification, SMSNotification or PushNotification — each with a send(message) method that formats the message differently.
solve(type, message) creates the right notification and returns send(message).
solve('sms', 'Hi') → '[SMS] Hi'
Sample tests