Фабричный класс - Должен ли я заполнить свой объект данными здесь?
Вопрос
я создаю класс Factory, который будет конструировать и возвращать объект. Обычно я делаю все данные на уровне доступа к данным, но я не думаю, что смогу достичь своей цели и все же сделать это. Что я хочу сделать, это использовать SQLDataReader, чтобы быстро прочитать информацию о данных и заполнить объект, который будет возвращен с завода. Это глупая идея? Есть ли лучший подход? Я бы предпочел не просто возвращать DataSet из DAL, если это возможно, или это вопрос производительности по сравнению с ремонтопригодностью?
Решение
В большинстве случаев это хорошая идея, поскольку этот способ обеспечивает два основных преимущества:
<Ол>Таким образом, вы можете разделить доступ к данным и бизнес-логику, что означает, что при изменении структуры базы данных алгоритмы верхнего уровня менять не нужно.
С точки зрения ОО вы конвертируете некоторые чистые данные в объекты, а также можете добавить поведение к объектам, что упрощает поддержку и повторное использование кода.
Другие советы
Если вы уверены, что будете использовать все данные, которые вы загружаете из SQLDataReader, то да, вы можете сделать это во время сборки на фабрике. Однако если в наборе данных есть много полей, которые будут использоваться только в меньшем количестве, то более быстрая загрузка ресурсов потребовала бы загрузки данных во время вызова методов доступа.
Тем не менее, я предлагаю вам загрузить его на заводе, когда у вас есть все «кусочки» под рукой, и если это не совсем верно, вы будете знать, что нужно исправить. Всегда начинайте с самой простой вещи, которая может сработать.
Я бы сказал, что это зависит от вашего ожидаемого использования Фабрики. Если это фабрика на вашем уровне доступа к данным, которая будет использоваться для заполнения бизнес-объектов данными из базы данных, тогда да, это место, где это нужно делать. ( Шаблон IRepository - это нечто вот так ... вроде).
Если ваша фабрика не предназначена для использования рядом с вашим кодом доступа к данным, я бы оставил их отдельно. Помните, что Принцип единой ответственности : объекты должны иметь только одна причина измениться. Если фабрика просто заполняет объекты данными, то это подходящее применение, однако, если она заполняет объекты данными в дополнение к другим действиям, то лучше не добавлять данные. Р>
Есть какой-то компромисс, куда бы вы ни пошли, поэтому обычно я хотел бы, чтобы объекты были как можно более простыми как можно дольше.