Object Factory Question - использование информации запроса базы данных для создания объектов - PullRequest
0 голосов
/ 28 сентября 2010

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

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

Спасибо

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

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

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

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

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

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

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

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

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

0 голосов
/ 28 сентября 2010

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

Да, ORM перекрывают разрыв между объектами и реляционными базами данных и могут служить вашим уровнем доступа к данным.Помните, что любой ORM, который вы используете, имеет определенные плюсы / минусы / ограничения.В зависимости от вашего опыта и требований, написание собственного уровня доступа к данным иногда является хорошей идеей;Не думайте, что вы ДОЛЖНЫ использовать сторонний ORM.

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

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

...