2009-10-28 97 views
1

我有一個問題,這裏有一個例子
我有一個模型類:股票C#:在哪裏放「save()」方法?


    public class Stock{ 
     //some properties, stock name, stock code; 
     public String StockName{ 
      get,set 
     } 
     public String StockCode{ 
      get,set 
     } 
    } 

另外我有一個服務類的StockService,將從數據庫加載數據,並創建了股票和設置屬性值。


    public class StockService:IStockService{ 
     public Stock CreateStockByStockCode(string stockCode){ 
      Stock stock = new Stock(); 
      //load the data from db and set the stock's properties. 
      stock.StockName = ... 
      stock.StockCode = ... 
     } 
    } 

所以,我的問題,我有一個 「保存()」 方法,我應該在哪裏放,
選項1:把它的股票類,


    public class Stock{ 
     public void Save(){ 
      //use the repository to save into db. 
     } 
    } 

選項2:把它放在服務類


    public class StockService:IStockService{ 
     public void Save(Stock stock){ 
      //use the repository to save into db. 
     } 
    } 


我認爲對於選項1:股票似乎有點聰明,它可以救自己,更ojbect爲主。對於選項2,我看到很多人使用這種模式。你有什麼想法?

回答

8

將Save()方法放入服務將防止Stock類需要有關數據庫結構的任何知識。 將Load()和Save()放入兩個不同的類也可能會讓人感到困惑。

1

我更喜歡選項2,因爲你剛纔所說的話是因爲「股票看起來有點聰明」。我相信這更有意義,例如,當你想刪除你的股票。

0

股票不應該關心它的存儲位置,因此保存和加載應該在服務類imo中。

0

我同意,請選擇2,以便將數據實體類從實際數據存儲中分離出來。順便說一句,你可能想看看the Repository Pattern

5

您可能需要閱讀Active Record patternRepository pattern。你在這裏之間的某個地方。

活動記錄被認爲是「更簡單」,而存儲庫更「純」,因爲您可以更好地分離關注點(您的實體不需要關心數據訪問)。