Фабричный класс - Должен ли я заполнить свой объект данными здесь?

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

  •  06-07-2019
  •  | 
  •  

Вопрос

я создаю класс Factory, который будет конструировать и возвращать объект. Обычно я делаю все данные на уровне доступа к данным, но я не думаю, что смогу достичь своей цели и все же сделать это. Что я хочу сделать, это использовать SQLDataReader, чтобы быстро прочитать информацию о данных и заполнить объект, который будет возвращен с завода. Это глупая идея? Есть ли лучший подход? Я бы предпочел не просто возвращать DataSet из DAL, если это возможно, или это вопрос производительности по сравнению с ремонтопригодностью?

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

Решение

В большинстве случаев это хорошая идея, поскольку этот способ обеспечивает два основных преимущества:

<Ол>
  • Таким образом, вы можете разделить доступ к данным и бизнес-логику, что означает, что при изменении структуры базы данных алгоритмы верхнего уровня менять не нужно.

  • С точки зрения ОО вы конвертируете некоторые чистые данные в объекты, а также можете добавить поведение к объектам, что упрощает поддержку и повторное использование кода.

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

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

    Тем не менее, я предлагаю вам загрузить его на заводе, когда у вас есть все «кусочки» под рукой, и если это не совсем верно, вы будете знать, что нужно исправить. Всегда начинайте с самой простой вещи, которая может сработать.

    Я бы сказал, что это зависит от вашего ожидаемого использования Фабрики. Если это фабрика на вашем уровне доступа к данным, которая будет использоваться для заполнения бизнес-объектов данными из базы данных, тогда да, это место, где это нужно делать. ( Шаблон IRepository - это нечто вот так ... вроде).

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

    Есть какой-то компромисс, куда бы вы ни пошли, поэтому обычно я хотел бы, чтобы объекты были как можно более простыми как можно дольше.

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