oop — Использование фабричного шаблона в PHP и Laravel

Должна ли фабрика отвечать за поиск моделей и их создание?

например:

Если бы у меня была модель продукта, должны ли на ее фабрике такие методы:

$product = $productFactory->findByID(32);

$product = $productFactory->all();

$product = $productFactory->findByName($productName);

$product = $productFactory->create($data);

4

Решение

Ну вообще то Factory Pattern это creational pattern который использует фабричные методы для решения проблемы создания объектов даже без указания статического класса, что означает, что он создает объекты динамически на run-time, Этот шаблон используется для работы с механизмами создания объектов, которые позволяют клиентскому классу использовать динамический класс, построенный во время выполнения. В этом шаблоне используется фабричный метод (абстрактный), и этот метод создает объекты с использованием других классов / объектов в зависимости от запроса клиентского класса, который использует встроенный объект. Ну, в общем, это широкая вещь.

Вместо того, чтобы думать в шаблонах дизайна, таких как шаблон, которому вы должны следовать, попытайтесь выяснить варианты использования вашего класса и использовать их соответственно. Скорее всего, вы имели в виду Model как классы, которые расширяются Eloquent ORM, и в этом случае ваши классы моделей уже имеют эти методы, если вы расширили Eloquent ORM поэтому вам не нужно создавать их в ваших классах, но для разделения бизнес-логики и уровня БД вы можете использовать обычные классы, где вы можете использовать эти классы в качестве зависимостей для вызова методов из ваших классов уровня базы данных. возможно, это звучит странно в любом случае.

От вас зависит, как вы организуете свою структуру каталогов, а думаете только о SoC и этого достаточно, чтобы получить идею для чистого архитектурного шаблона приложения. Не думайте слишком глубоко о шаблонах проектирования, вместо этого думайте о чистой модели приложения, вот и все. Наверное эта статья может вам помочь немного (специально обсуждалось с помощью Laravel а также Repository Pattern).

За Factory PatternВы можете проверить этот простая, но полезная статья.

11

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]