Завод объектов - использование информации о запросах базы данных для создания объектов
-
25-09-2019 - |
Вопрос
У меня есть несколько объектов, таких как продукты, заказ и т. Д. Когда я получаю информацию из моей базы данных, я принимаю ряд и создаю один из типов объектов. Затем я работаю с этим объектом создан. Я прочитал это называется фабрикой.
Есть ли что-то преимущество для этого? Особенно в слабо набранном языке, как PHP?
Спасибо
Редактировать: это где я получаю база данных агностичность? Это то, что делает ORM по существу?
Решение
Создавая свои объекты из запросов баз данных, вы определяете отображение между вашими объектами и реляционной базой данных. Это именно то, что делает SORM Software.
При этом и обеспечение того, чтобы ваши объекты никогда не доступа к базе данных, но вместо этого используйте функции / объекты доступа к базе данных, вы защищаете свой код из изменений двумя способами:
Изменения в вашей схеме базы данных не будут звонить через ваш код. Вместо этого изменения кода будут расположены только в ваших объектах доступа к базе данных.
Вы можете переключиться на другой СУБД, реализуя новый слой базы данных, который следует тот же интерфейс, что и оригинал. Ваши другие объекты не потребуют изменений.
Я предполагаю, что в этом смысле вы получите некоторую базу данных-агностичность, но вы, вероятно, будете лучше с помощью библиотеки базы данных, которая предоставляет эту агностичность из коробки.
На мой взгляд, преимущество в том, что вы работаете с объектами и получаем все преимущества, которые объектно-ориентированные языковые предложения. Затем вы можете прочитать логику домена на более высоком уровне (с точки зрения определенных вами объектов) без просеивания через запросы к базе данных. Написание ORM самостоятельно можно жестко, но есть инструменты там, которые помогите с этим.
Это маршрут, который я обычно беру, но я не делаю никакой разработки PHP, поэтому я не могу сказать, насколько хорошо это относится к этому языку.
Другие советы
То, что вы описываете, является реализацией слоя доступа к данным - это не звучит как пример Фабричный способ шаблона, и ни то Абстрактный фабричный рисунок.
Да, ОРМС мосируют зазор от объектов к реляционным базам данных и могут служить вашим слоем доступа к данным. Имейте в виду, любой используемый вами ORM имеет определенные плюсы / минусы / ограничения. В зависимости от вашего опыта и требований, написание собственного уровня доступа к данным иногда является хорошей идеей; Не чувствую, что вы должны использовать 3-й односторонний ORM.
Да, хороший уровень доступа к данным позволяет легко поменять механизм хранения (разные базы данных, XML, плоские файлы, что угодно) без изменения вашей бизнес-логики, интерфейса UI или другого кода.
Независимо от напечатанных или набранных набранных языков, если вы работаете на языке OO OO, будет гораздо проще написать код с использованием объектов данных (предоставленные ORM или доступом доступа к дому доступа). Я уверен, что можно написать систему без слоя доступа к данным, где ваш бизнес-уровень работает напрямую с базой данных. Но он, вероятно, будет более сложным для реализации и обслуживания.