Вы создаёте уведомления. Сначала у вас только
EmailNotification:new EmailNotification(to, subject, body);
Потом появляются другие типы:
⏩SMSNotification
⏩PushNotification
⏩SlackNotification
⏩WhatsAppNotification
Появляется дублирующийся код:
if (type.equals("email")) new EmailNotification(...)
else if (type.equals("sms")) new SMSNotification(...)
...Проблемы:
—> Повтор кода.
—> Нарушение принципа Open/Closed.
—> Жёсткая связка с классами.
—> Сложно тестировать и расширять.
Как фабрика вас спасает
Вместо создания объектов напрямую или написания
switch/if, вы создаёте NotificationFactoryФабрика:
—> Скрывает логику создания
—> Решает, какой подкласс вернуть
—> Делает основной код чистым и слабо связанным
Теперь вам всё равно, как он создаётся. Вы просто запрашиваете и получаете готовый объект
Пример кода на фото 😊
👉 Java Portal