Были нарушены два принципа
-
Принцип единственной ответственности (класс NotificationService выполнял 2 обязанности)
-
Проектировать нужно на основе интерфейса, а не конкретной реализации ( потому создал интерфейсы и два отедльных класса, реализующих соответсвующие интерфейсы.)
Паттерн проектирования - DI. Теперь можно добавлять новые способы рассылки.
Основная проблема была - сильная связанность кода.