我已经开始了一个小项目来适当地自学一些东西:领域驱动的开发和控制反转就是适用于这种情况的。
我决定编写一个应用程序,可以加载和可视化体育赛事的计时数据(我可以访问大量此类数据)。
一个要求是,我希望能够从许多不同的数据源中进行选择,其中一些是事件的完整细节(事件发生后生成的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方法来填充域,如果是实时源,这将是长期运行的,并且会在发生时放入圈数,完整的数据源将尽可能快地填充模型。
但是,前端将立即访问race对象,并可以绑定到其事件。是否最好将race对象传递到load方法中,以便提前设置事件?
我只是想知道这个设计是否合适。我觉得有点奇怪,我不确定这是否只是因为它是新的。我也可能想得太多了。