Завод объектов - использование информации о запросах базы данных для создания объектов

StackOverflow https://stackoverflow.com/questions/3808052

Вопрос

У меня есть несколько объектов, таких как продукты, заказ и т. Д. Когда я получаю информацию из моей базы данных, я принимаю ряд и создаю один из типов объектов. Затем я работаю с этим объектом создан. Я прочитал это называется фабрикой.

Есть ли что-то преимущество для этого? Особенно в слабо набранном языке, как PHP?

Спасибо

Редактировать: это где я получаю база данных агностичность? Это то, что делает ORM по существу?

Это было полезно?

Решение

Создавая свои объекты из запросов баз данных, вы определяете отображение между вашими объектами и реляционной базой данных. Это именно то, что делает SORM Software.

При этом и обеспечение того, чтобы ваши объекты никогда не доступа к базе данных, но вместо этого используйте функции / объекты доступа к базе данных, вы защищаете свой код из изменений двумя способами:

  • Изменения в вашей схеме базы данных не будут звонить через ваш код. Вместо этого изменения кода будут расположены только в ваших объектах доступа к базе данных.

  • Вы можете переключиться на другой СУБД, реализуя новый слой базы данных, который следует тот же интерфейс, что и оригинал. Ваши другие объекты не потребуют изменений.

Я предполагаю, что в этом смысле вы получите некоторую базу данных-агностичность, но вы, вероятно, будете лучше с помощью библиотеки базы данных, которая предоставляет эту агностичность из коробки.

На мой взгляд, преимущество в том, что вы работаете с объектами и получаем все преимущества, которые объектно-ориентированные языковые предложения. Затем вы можете прочитать логику домена на более высоком уровне (с точки зрения определенных вами объектов) без просеивания через запросы к базе данных. Написание ORM самостоятельно можно жестко, но есть инструменты там, которые помогите с этим.

Это маршрут, который я обычно беру, но я не делаю никакой разработки PHP, поэтому я не могу сказать, насколько хорошо это относится к этому языку.

Другие советы

То, что вы описываете, является реализацией слоя доступа к данным - это не звучит как пример Фабричный способ шаблона, и ни то Абстрактный фабричный рисунок.

Да, ОРМС мосируют зазор от объектов к реляционным базам данных и могут служить вашим слоем доступа к данным. Имейте в виду, любой используемый вами ORM имеет определенные плюсы / минусы / ограничения. В зависимости от вашего опыта и требований, написание собственного уровня доступа к данным иногда является хорошей идеей; Не чувствую, что вы должны использовать 3-й односторонний ORM.

Да, хороший уровень доступа к данным позволяет легко поменять механизм хранения (разные базы данных, XML, плоские файлы, что угодно) без изменения вашей бизнес-логики, интерфейса UI или другого кода.

Независимо от напечатанных или набранных набранных языков, если вы работаете на языке OO OO, будет гораздо проще написать код с использованием объектов данных (предоставленные ORM или доступом доступа к дому доступа). Я уверен, что можно написать систему без слоя доступа к данным, где ваш бизнес-уровень работает напрямую с базой данных. Но он, вероятно, будет более сложным для реализации и обслуживания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top