2008-10-10 3 views
5

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

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

ответ

3

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

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

Возможно, посмотрите на NHibernate или Active Record.

2

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

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

+0

Вы получили голосование только за первую строку ... Я пытался убедить людей в этом уже давно. – ckramer 2008-10-10 01:27:30

6

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

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

Это часто используется в conjection с Repository http://martinfowler.com/eaaCatalog/repository.html

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

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

Смежные вопросы