22 мая 2024 г. (изменено: 22 мая 2024 г.)
Канал: @cherkashindev
🏗️ Паттерн “Простая фабрика”
Ранее я писал:
Логическое продолжение этой “базы” — паттерн “простая фабрика”. Он является более простой альтернативой для порождающих паттернов:
- фабричный метод
- абстрактная фабрика
По ощущению, используется гораздо чаще, чем его старшие братья (на нём держится весь полиморфизм 😄).
По сути паттерн представляет собой простой метод, который принимает на вход параметры, и на основе параметров определяет, объект какого типа можно создать.
Выглядит следующим образом:
function createGitService(type: string, host: string, token: string): GitService | null {
switch (type) {
case 'Gitlab':
return new GitlabService(host, token);
case 'Gitea':
return new GiteaService(host, token);
default:
return null;
}
}💡 Что нам это даёт?
- Упрощает код, когда нужно избежать прямых зависимостей от конкретных классов;
- Позволяет инкапсулировать логику создания объектов, ведь логика может быть сложнее, чем простая передача параметров в конструктор.
Этот же паттерн используется внутри хорошо известного вам document.createElement("div") метода. Мы передаём название тега, а метод создаёт тег нужного нам типа.
Как-нибудь расскажу, как он работает под капотом в Хроме.
@cherkashindev