2008-08-27 49 views
4

這可能是在「討論」方面,但我真的很想聽聽你對此的看法。將數據訪問類拆分爲讀寫器還是將它們合併?

以前我經常編寫處理讀寫的數據訪問類,這些類經常導致名稱很差,比如FooIoHandler等。難以命名的類的設計很糟糕的經驗法則表明這不是很好的解決方案。

因此,我最近開始將數據訪問分解爲FooWriter和FooReader,這導致更好的名稱並提供了一些額外的靈活性,但同時我喜歡將它們放在一起,如果類不是很大。

閱讀器/作家分離更好的設計,還是應該將它們合併?如果我將它們結合起來,我應該命名這個班級是什麼?

謝謝/ Erik

回答

2

ORM可能是您的最佳解決方案。
或者使用一個存儲庫類型模式和一個負責狀態持久性的「thingContext」對象。

就個人而言,我使用activeRecord模式,其中保存邏輯被烘焙到基類中,但是我將它留給nHibernate樣式的存儲庫模式。 DDD的允許和測試沒有db的東西是非常好的框架類型的情況下,我的業務邏輯現在正在獲得一個新的UI的牽引力。

3

我現在使用Linq to Sql。這完全解決了這個問題。

但是,如果你沒有這個選項(或一些類似的ORM工具),我沒有看到任何理由來分離讀/寫方法。它只是增加了更多的類並使數據訪問複雜化。我一直把它設計如下:

  1. 組件/業務對象:汽車
  2. 數據訪問,包含靜態讀取和寫入方法:CarDB

實例應用:

Car car = new Car(); 
car.Manufacturer = "Toyota" 
car.Model = "Camry" 
car.Year = 2006; 
car.CarID = CarDB.InsertCar(car) 
car.OwnerID = 2; 
CarDB.UpdateCar(car); 

這對於數據訪問也是有意義的,其中讀取和寫入都需要作爲同一事務的一部分來執行。如果你把班級分開,那會去哪裏?

3

忽略ORM(不是因爲我贊成或反對)我會讓他們在同一個班級。他們都是單一責任的一個方面,把他們分開只是讓你看到兩個地方,我無法真正想到你想要這樣做的一個好理由。

0

當給出選擇時,我通常將讀者劃分子類來創建作者。

1

讀取和寫入後端存儲的內容可以稱爲數據存取器或ReaderWriter,IO或Store。

因此,如何之一:

  • FooDataAccessor
  • FooAccessor
  • FooReaderWriter
  • FooRW
  • FooIO
  • FooStore
  • FooStorage
+0

感謝一些有用的其他名稱。 「數據訪問類」與「數據庫」不同義。 :) – 2014-01-14 21:56:13

相關問題