Как бы этот дизайн о доступе к данным? - PullRequest
1 голос
/ 03 апреля 2012

Мне нужно реализовать класс под названием Foo, где мне нужно Get и Save через доступ к данным.

Я могу себе представить, что мне нужны классы, один из них - доступ, получение и сохранение данных.из XmlFile, а другой - это сервис, который возвращает объекты с помощью одинаковых запросов (GetFooById, GetFooByLevel, ...), хотя я и первый.Вот почему я хочу уточнить этот дизайн и какие вещи мне нужно разделить.

Ответы [ 3 ]

2 голосов
/ 04 апреля 2012

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

public interface IFooRepository
{
   void Save(Foo);
   Foo GetById(int id);
   Foo GetByLevel(int level) 
}

 public class FooXmlRepository:IFooRepository
  {
       //implementation
   }

  IFooRepository repo= new FooXmlRepository(); //or via your favorite DI container

Таким образом, объект Foo будет отделен проблемами хранения.И позже, если вы хотите использовать БД вместо XML, просто напишите другую реализацию.Приложение будет использовать интерфейс, поэтому вам не нужно ничего менять, кроме назначения «репо».

1 голос
/ 03 апреля 2012

В общем, если вы подключаете базу данных, я бы пошел с одним хранилищем для всех связанных.
В случае XML - как я думаю, у вас -
Загрузка / сохранение XML может быть частьюFoo - например, static Foo Parse(string) и string ToXML() или что-то подобное.Это позволяет вам более «плавно» загружать / сохранять (и если у вас больше иерархии объектов и т. Д., Что часто бывает в XML - с Db / реляционными данными все более «плоско», и тогда загрузка / сохранение действительно нужныитерации записей. В случае XML часто больше идет прохождение иерархии с узлами и т. д.).Или вы можете разделиться на класс расширений - например, Get(this Foo, string xml).
По моему мнению, xml get / save больше похож на сериализацию (но зависит от ваших объектов, иерархии, общей структуры).
И тогда выможет создать хранилище, прежде чем делать запросы.
Если ваш 'Foo' не поддерживает или не будет придерживаться XML в будущем - тогда отделитесь.

1 голос
...