Я начал небольшой проект, чтобы должным образом научить себя многим вещам: разработка, управляемая доменом, и инверсия управления - это те, которые применимы в этом случае.
Я решил написать приложение, которое может загружать и визуализировать данные о времени от спортивных событий (у меня есть доступ к довольно большому количеству данных этого типа).
Одним из требований является то, что я хочу иметь возможность выбирать из ряда различных источников данных, некоторые из которых являются полными деталями события (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, который заполняет домен, в случае действующего источника он будет работать долго и будет увеличивать время прохождения круга, поскольку полный источник данных просто заполнит модель так быстро как может.
Однако передний конец будет иметь непосредственный доступ к объекту гонки и может связываться с его событиями. Лучше ли передать гоночный объект в метод load, чтобы события могли быть установлены заранее?
Я просто хочу знать, выглядит ли этот дизайн нормально. Мне это немного странно, и я не уверен, что это только потому, что он новый. Возможно, я слишком много думаю об этом.