А чем плохи фабричные методы внутри самой сущности?

2 ответов

13 просмотров

Нарушение SRP

та не плохие, только когда они нужны.. например у тебя есть сущность, тот же автомобиль.. автомобиль может быть новым, с салона, а может быть БУшный от перекупа у тебя есть 2 сценария, когда автомобиль попадает в твою систему. Когда продаваны в салоне заносят по прибытию новой партии или обычные люди или перекупы свою дасточку внести хотят в сценарии нового авто будет что-то типа Car::new($model, $color) для БУ будет Car::used($model, $color, $year, ...) а под капотом и тот и другой метод будут вызывать return new self($model, $color ....) просто для новой, пробег к примеру будет сразу 0 идти, год выпуска - текущий и т.д метод для создания БУ машины будет прокидывать явно переданные поля Пример надуманный конечно, но идея такая. У тебя есть так называемые именованные конструкторы Это по сути фабричные методы и они полезны, когда у тебя есть все необходимы данные для создания объекта сразу. Тогда нет смысла делать фабрику, которая и так прокинет все эти данные в конструктор и на этом все Если же у тебя появляется доп логика, например, сходить в другую систему по АПИ и получить какие-то доп данные. Вызвать какой-то доп сервис-калькулятор и посчитать сумму с налогами для страны пользователя - это все уезжает в фабрику

Похожие вопросы

Обсуждают сегодня

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта