Вопрос

У меня есть фабричный класс, который заполняет объекты данными. Я хочу реализовать сохранение из объекта, но не хочу заполнять объект данными из db - глупо ли, чтобы моя фабрика, которая создает класс, также сохраняла данные?

то есть: в моем методе .Save () объекта я бы вызвал Factory.Save (myObject);

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

Решение

Если вы беспокоитесь о базах данных в классах - рассматривали ли вы возможность использования O / R mapper?

Это позволит полностью исключить содержимое базы данных из вашего кода и ваши доменные объекты в чистоте.

Может быть, посмотрите NHibernate или Активная запись .

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

Фабричный класс - это шаблон для создания, который помогает создавать новые объекты.

Существуют различные шаблоны, которые имеют дело с сохраняющимися объектами, одним из которых является средство отображения данных. http://martinfowler.com/eaaCatalog/dataMapper.html

Это часто используется в предположении с хранилищем http://martinfowler.com/eaaCatalog/repository.html

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

Таким образом, средство отображения данных / хранилище отвечает за оба аспекта сохранения (заполнение из базы данных и сохранение обратно в базу данных).

Нет, это совсем не глупо, на самом деле, так все должны это делать. Бизнес-объект не должен содержать никакой логики постоянства.

Кстати, если вы используете C # 3.0, то вы можете даже не беспокоиться о классе Factory. Просто создайте методы расширения. Таким образом, вы можете по-прежнему иметь свой постоянный код изолированным от бизнес-объекта и при этом иметь возможность вызывать myObject.Save ().

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