我有一个问题,这是一个例子 我有一个Model类:Stock
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 = ...
}
}
所以,我的问题,我有一个“Save()”方法,我应该放在哪里,
选项1:将其放入Stock类,
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。对于option2,我看到很多人都使用这种模式。你有什么想法?
答案 0 :(得分:8)
将Save()方法放入服务将阻止Stock类需要任何有关数据库结构的知识。 将Load()和Save()放入两个不同的类中也可能会让人感到困惑。
答案 1 :(得分:5)
您可能希望了解Active Record pattern和Repository pattern。你在这里介于两者之间。
Active Record被认为是“更简单”,而Repository更“纯粹”,因为您可以更好地分离关注点(您的实体不需要关心数据访问)。
答案 2 :(得分:1)
我更喜欢选项2,因为你刚才说的是“股票似乎有点聪明”。我相信这会更有意义,例如,当您想要删除股票时。
答案 3 :(得分:0)
股票不应该关心它的存储位置,因此保存和加载都应该在服务类imo中。
答案 4 :(得分:0)
我同意,请选择选项2,以便将数据实体类与实际数据存储分离。顺便说一句,您可能需要查看the Repository Pattern。