C #: где поместить метод «save ()»?

2

У меня есть вопрос, вот пример
У меня есть класс 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 properties.
            stock.StockName = ...
            stock.StockCode = ...
        }
    }

Итак, мой вопрос, у меня есть метод "Сохранить()", куда я должен положить,
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.
        }
    } 


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

Теги:
methods
oop
design

5 ответов

8

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

5

Возможно, вы захотите прочитать как Активный шаблон записи, так и шаблон хранилища. Вы находитесь где-то посередине.

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

1

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

0

Я согласен, идите для варианта 2, чтобы вы отделили классы данных от фактического хранилища данных. Кстати, вы можете взглянуть на шаблон хранилища.

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню