2008-10-10 58 views
5

我有一個用數據填充對象的工廠類。我想從對象中實現保存,但不想用db填充對象的東西 - 讓我的創建類的Factory也保存數據是愚蠢的嗎?工廠類別 - 保存對象

ie:在我的.Save()方法對象上,我會調用Factory.Save(myObject);

回答

3

如果您擔心類中的數據庫內容 - 您是否考慮過使用O/R映射器?

這會使數據庫的內容完全不在代碼中,而且你的域對象也是乾淨的。可以看看NHibernateActive Record

2

不,它根本不傻,事實上,這就是每個人都應該這樣做的方式。業務對象不應包含任何持久性邏輯。

順便說一句,如果你使用的是C#3.0,那麼你甚至可能不會打擾Factory類。只需創建擴展方法。這樣,您仍然可以將持久性代碼與業務對象隔離,並且仍然可以調用myObject.Save()。

+0

你得到了一個單獨的第一行的投票....我一直試圖說服人們很長一段時間了。 – ckramer 2008-10-10 01:27:30

6

工廠類是一種可幫助創建新對象的創建模式。

有哪些應對持久對象的各種模式,其中之一是數據映射器 http://martinfowler.com/eaaCatalog/dataMapper.html

這通常被用來在連詞與庫 http://martinfowler.com/eaaCatalog/repository.html

您可以使用這些圖案抽象的數據庫遠來自您的域/業務對象,並從您的應用程序中訪問它們以查詢和保存對象。

因此,數據映射器/存儲庫負責持久性的兩個方面(從數據庫填充並保存回數據庫)。