Фабричный класс - Сохранить объекты
Вопрос
У меня есть фабричный класс, который заполняет объекты данными. Я хочу реализовать сохранение из объекта, но не хочу заполнять объект данными из 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 ().