Использование шаблона IRepository для нескольких доменных объектов и нескольких механизмов хранения

Это ОЧЕНЬ упрощенный пример для демонстрации вопроса. Хотя я показываю здесь только два предметных объекта, представьте, что есть еще много с различными параметрами.

Допустим, у меня есть следующие доменные объекты:

public class Object1
{
    public string Identifier { get; set; }
    public string Name { get; set; }
}

public class Object2
{
    public string Identifier { get; set; }
    public int ItemValue { get; set; }
}

Типичная реализация шаблона Repository будет иметь Object1Repository и Object2Repository, где каждый реализует некоторый интерфейс IRepository, который может включать такие методы, как AddObject, DeleteObject, GetObjectByIdentifier и т. Д. Затем хранилище будет знать, как взаимодействовать с базой данных для выполнения предложенного методы.

Это все хорошо, и я использовал шаблон Repository именно так много раз. Теперь у меня есть проблема, когда у меня есть несколько различных механизмов хранения; Oracle, SQLServer, текстовый файл и файл XML. Каков наилучший подход к дизайну для поддержки этой идеи? Хранилище репозиториев? По сути, я пытаюсь добиться того, чтобы несколько разных объектов можно было хранить на нескольких разных носителях, и я пытаюсь применить шаблон Repository к этой идее.

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

1 ответ

Решение

Пожалуйста, обратитесь к разделу Как мне создать хранилище для обработки нескольких стратегий доступа к данным? Я думаю, это то, что вы хотите.

В основном предположим, что у вас уже есть один интерфейс IRepository, имеющий методы CRUD и другие универсальные методы, ссылающиеся на все остальные ваши репозитории, тогда у вас есть несколько реализаций интерфейса IRepository.

После этого используйте любой контейнер IOC (я использую Windsor Castle), чтобы определить, какой компонент реализации должен участвовать в этом интерфейсе при настройке приложения.

Другие вопросы по тегам