Java Portal | Программирование
11.3K subscribers
797 photos
59 videos
19 files
590 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
image_2025-04-22_06-02-27.png
578.5 KB
Простое объяснение паттерна Фабрика

Вы создаёте уведомления. Сначала у вас только 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Программирование — В С Ё

В 2025 году на кодинге уже не вывезешь, перспектива года - Информационная Безопасность.

Ловите полезные каналы, которые помогут ворваться в новое направление.

👍 ZeroDay — Уроки, эксплуатация уязвимостей с нуля
👍 Белый Хакер — Свежие новости из мира ИБ
😎 Арсенал Безопасника — Все необходимые инструменты
😎 Бункер Хакера — Статьи, книги, шпаргалки и хакинг
👨‍💻 Серверная Админа — Настройка и уроки по компьютерным сетям

📂Вступай и изучай новое направление!
Please open Telegram to view this post
VIEW IN TELEGRAM
Коротко о фабричном методе HashMap::newHashMap

Начиная с JDK 19, класс HashMap предоставляет новый фабричный метод:

var map = HashMap.<Key, String>newHashMap(10);


В этом примере возвращаемая карта будет достаточно большой, чтобы вместить 10 отображений. У неё значение коэффициента загрузки по умолчанию — 0.75. Поэтому фактическая вместимость (capacity) будет больше, чем переданный аргумент 10. Вместимость вычисляется как:

    10        <-- количество отображений
capacity = -----
0.75 <-- коэффициент загрузки


Это отличается от конструктора:

var map = new HashMap<Key, String>(10);


В этом случае аргумент 10 — это начальная вместимость (фактическая вместимость будет степенью двойки).

Также важно: фабричный метод внутри вызывает конструктор 🔧

Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM