Какие детали должны быть скрыты на уровне доступа к данным? - PullRequest
1 голос
/ 01 марта 2012

Я создаю Уровень доступа к данным (DAL) для чтения / изменения некоторых таблиц, хранящихся в файле XML. Во время работы моего приложения строки этих таблиц обновляются очень часто, поэтому я подумал о двух возможных альтернативах:

  1. Когда приложение запускается, я могу загрузить все данные в таблицах через DAL и поместить их в структуру данных, такую ​​как Dictionary. Во время работы приложения этот словарь постоянно обновляется. Когда приложение закрывается, я вызываю метод DAL, чтобы перезаписать старый файл новыми данными в словаре.
  2. Вероятно, было бы правильнее скрыть этот словарь для верхних уровней, поэтому у меня может быть приватное поле Dictionary в DAL. Таким образом, верхние уровни будут вызывать методы DAL для обновления строк таблиц.

Возможно, второй подход лучше первого?

1 Ответ

1 голос
/ 01 марта 2012

Вариант 2 здесь лучше для инкапсуляции, хотя и увеличивает сложность. Словарь - это деталь реализации, которой не должны заниматься ваши верхние уровни. Вместо этого ваш уровень доступа к данным должен предоставлять классы, которые представляют фактические таблицы - например, у вас может быть класс Person или класс Inventory. В качестве классов DAL они будут предоставлять методы для добавления, удаления, обновления, извлечения и т. Д. В зависимости от ситуации.

Далее у вас будет доменный слой, который работает со строкой, извлеченной из ваших классов DAL, которая добавляет бизнес-методы (например, Order может быть создан Person и влияет на Inventory - акт вызов методов для этих классов домена сводится к DAL для фактического прикосновения к базовым данным).

...