2009-10-28 5 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 = ... 
     } 
    } 

так, мой вопрос, у меня есть метод "Save()", где я должен поставить,
Option1: положить его в классе Stock,


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

option2: положить его в класс обслуживания


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


я думаю, что для option1: запас кажется немного умным, он может сохранить себя и более ojbect-ориентированные. И для опции2 я видел, как многие парни используют этот тип рисунка. Что вы думаете?

ответ

8

Включение метода Save() в службу не позволит классу Stock требовать каких-либо знаний о структуре базы данных. Включение Load() и Save() в два разных класса, вероятно, будет довольно запутанным.

1

Я предпочитаю вариант 2 из-за того, что вы только что сказали, потому что тогда «запас кажется немного умным». Я считаю, что это имеет немного больше смысла, например, когда вы хотите удалить свой запас.

0

The Stock не должен заботиться о том, где он хранится, поэтому сохранение и загрузка должны быть в классе обслуживания imo.

0

Согласен, перейдите к варианту 2, чтобы вы отделили классы данных от фактического хранилища данных. Кстати, вы можете взглянуть на the Repository Pattern.

5

Возможно, вы захотите прочитать как Active Record pattern, так и Repository pattern. Вы где-то посередине.

Активная запись считается «более простой», в то время как репозиторий более «чист», поскольку вы получаете лучшее разделение проблем (ваши объекты не нуждаются в доступе к данным).

Смежные вопросы