Я начал небольшой проект, чтобы правильно учить себя ряду вещей: развитие домена и инверсия управления - это те, которые применяются в этом случае.Асинхронная загрузка модели домена
Я решил написать приложение, которое может загружать и визуализировать данные синхронизации из спортивных событий (у меня есть доступ к довольно большому количеству данных этого типа).
Одним из требований является то, что я хочу, чтобы иметь возможность выбирать из нескольких источников данных, некоторые из которых являются полной информацией о событии (CSV, созданных после события), а некоторые из них являются источниками живых данных.
У меня возникла проблема с проектированием процесса, который загружает эти данные в домен, чтобы его можно было легко использовать как для синхронной, так и для асинхронной загрузки.
Я предполагаю, что мне нужен абстрактный класс, из которого берутся все Источники данных. Этот класс должен быть в состоянии установить себя вверх (получить путь к файлу данных, или адрес сервера живого источника данных), и я предполагаю, что это должно выглядеть примерно так:
protected abstract void Setup();
protected abstract void LoadData(Race race);
public Race Load()
{
Race race = new Race();
Thread t = new Thread(new ParameterizedThreadStart(LoadData));
t.Start(race);
return race;
}
Каждый данных источник может затем реализовать свой собственный метод настройки, но это кажется отвратительным, мне не нравится идея класса источника данных, показывающая диалог или что-то, потому что это просто неправильно.
Они также могут реализовать свой собственный метод LoadData, который заполняет домен, в случае с источником в реальном времени это будет длиться долго, и он будет вводить время прохождения круга по мере их возникновения, полный источник данных просто заполнит модель как как можно быстрее.
Однако передняя часть будет иметь непосредственный доступ к объекту гонки и может привязываться к его событиям. Лучше ли передавать объект гонки в метод загрузки, чтобы события могли быть установлены заранее?
Я просто хочу знать, выглядит ли этот дизайн в порядке. Мне кажется, что это немного странно, и я не уверен, что это просто потому, что это ново. Я тоже могу подумать обо всем этом.