2008-10-10 7 views
5

Mam klasę fabryki, która zapełnia obiekty danymi. Chcę wprowadzić zapisywanie z obiektu, ale nie chcę zapełniać obiektu plikami db - czy to głupie, że moja Fabryka, która tworzy klasę, również zapisuje dane?Klasa Factory - Save Objects

tj .: w mojej metodzie .Save() na obiekcie powinienem wywołać Factory.Save (myObject);

Odpowiedz

3

Jeśli martwisz się o rzeczy z bazy danych na lekcjach - czy rozważałeś użycie programu odwzorowującego O/R?

Uniemożliwi to przechowywanie zawartości bazy danych w całości z kodu i obiektów domeny.

Może spojrzeć na NHibernate lub Active Record.

2

Nie, to wcale nie jest głupie, tak właśnie każdy powinien to robić. Obiekt biznesowy nie powinien zawierać żadnej logiki trwałości.

Przy okazji, jeśli używasz C# 3.0, to możesz nawet nie zawracać sobie głowy klasą Factory. Po prostu utwórz metody rozszerzenia. W ten sposób nadal można wyodrębnić swój kod utrwalania z obiektu biznesowego i nadal można wywoływać funkcję myObject.Save().

+0

Masz głosowanie tylko za pierwszą linię ... Od dawna próbuję przekonać ludzi o tym. – ckramer

+0

Po prostu nie nazwijmy tego fabryką - zaczniesz mylić ludzi, którzy wiedzą, czym jest fabryka. – jop

6

Klasa fabryka to kreacyjny wzór, który pomaga w tworzeniu nowych obiektów.

Istnieją różne wzory, które zajmują się utrzymującymi się obiektami, z których jeden jest Mapper dane dotyczą http://martinfowler.com/eaaCatalog/dataMapper.html

ten jest często używany w conjection z repozytorium http://martinfowler.com/eaaCatalog/repository.html

można korzystać z tych wzorców do abstrakt baza z dala z twoich domen/obiektów biznesowych i uzyskaj do nich dostęp z poziomu aplikacji do zapytań i zapisywania obiektów.

Tak więc program odwzorowujący dane/repozytorium jest odpowiedzialny za oba aspekty trwałości (zapełnianie z bazy danych i zapisywanie z powrotem do bazy danych).