im создает класс Factory, который будет конструировать и возвращать объект. Я обычно делаю все данные на уровне доступа к данным, но я не думаю, что смог бы достичь своей цели и все-таки сделать это. Я хочу использовать SQLDataReader для быстрого считывания данных и заполнения объекта, который будет возвращен с завода. Это глупая идея? Есть ли лучший подход? Я бы предпочел не просто возвращать DataSet из DAL, если это возможно, или это вопрос производительности и ремонтопригодности?Factory Class - Должен ли я заполнить свой объект данными здесь?
ответ
В большинстве случаев это хорошая идея, так как этот способ имеет два основных преимущества:
Таким образом, вы можете отделить доступ к данным и бизнес-логики, что означает, что если вы меняете базы данных разработки алгоритмов верхнего слоя не нужно менять.
С точки зрения точки OO вы преобразуете некоторые чистые данные в объекты и также можете добавить поведение к объектам, что делает код более удобным для обслуживания и повторного использования.
Если вы уверены, что собираетесь использовать все данные, которые вы загружаете из SQLDataReader, то да, вы могли бы это сделать во время строительства на заводе. Однако, если в наборе данных имеется много полей, в которых будет использоваться только меньшинство, тогда спрос на загрузку данных во время вызова аксессуаров будет лучше использовать ресурсы.
Это говорит о том, что я предлагаю вам загрузить его на заводе, когда у вас есть все «штуки» под рукой, и если это не совсем правильно, вы поймете, что нужно исправлять. Всегда начинайте с самой простой вещи, которая могла бы работать.
Я бы сказал, что это зависит от ожидаемого использования Фабрики. Если это фабрика на вашем уровне доступа к данным, которая будет использоваться для заполнения бизнес-объектов данными из базы данных, то да, это место для этого. (Рисунок IRepository - это что-то вроде этого ... вроде).
Если ваш завод не предназначен для жизни рядом с кодом доступа к данным, я бы сохранил их отдельно. Помните Single Responsibility Principle: у объектов должна быть только одна причина для изменения. Если фабрика просто заполняет объекты данными, то это подходящее использование, однако, если оно заполняет объекты данными в дополнение к другим вещам, тогда лучше не добавлять данные.
Имеются компромиссы в зависимости от того, как вы идете, поэтому, как правило, мне нравится сохранять объекты максимально простыми как можно дольше.
- 1. Как я должен заполнить свой объект?
- 2. Заполнить объект данными
- 3. Factory Class - Save Objects
- 4. Должен ли я сливаться здесь?
- 5. Должен ли статический метод «create() Factory Class? Или сделать Singleton Factory Class?
- 6. Должен ли я поместить свой объект, если я использую свойство
- 7. Должен ли я использовать шаблон Factory Method?
- 8. Должен ли я использовать HttpResponseRedirect здесь?
- 9. Должен ли я использовать делегацию здесь?
- 10. Протактор: Должен ли я помещать утверждения в свой объект PageObject?
- 11. Python class factory ... или?
- 12. EJB Factory Class
- 13. Должен ли я реализовать IDisposable здесь?
- 14. Должен ли я использовать CUDA здесь?
- 15. Должен ли я избегать использования указателей здесь?
- 16. Должен ли я использовать шаблон состояния здесь?
- 17. Должен ли я использовать ссылку здесь?
- 18. Должен ли я скопировать блок здесь?
- 19. Должен ли я использовать курсоры SQL здесь?
- 20. Должен ли я использовать Первичный ключ здесь?
- 21. Должен ли я использовать исключение здесь?
- 22. Должен ли я использовать перечисление здесь?
- 23. Должен ли я использовать инструкцию goto здесь?
- 24. Unit Testing Dynamic Factory Class
- 25. Factory class - stop init
- 26. A Repository Factory Class
- 27. Python: Должен ли я использовать делегирование или наследование здесь?
- 28. Должен ли я денормализовать свой стол
- 29. Должен ли я синхронизировать свой метод?
- 30. Должен ли я объявить свой байт []
Большое спасибо за ваш комментарий, вот что я попробую. – schmoopy 2008-10-10 00:51:15