我有一组静态数据 MasterData ,当前存储为Singleton。在不同的库中,我存储了一组相似的数据,再次作为Singleton GlobalData 。 GlobalData包含来自MasterData的所有数据以及一些其他信息(请参见下面的简化示例)。
public class MasterData
{
public Dictionary<string, List<double>> DataSeries { get; private set; }
public List<DateTime> Dates { get; private set; }
public static MasterData Instance { get; } = new MasterData();
static MasterData() {}
private MasterData() {}
public void LoadData() {}
}
public class GlobalData
{
public Dictionary<string, List<double>> DataSeries { get; private set; }
public List<DateTime> Dates { get; private set; }
// extra data props
public Dictionary<string, DomainObject> OtherData { get; private set; }
...
public static GlobalData Instance { get; } = new GlobalData();
static GlobalData() {}
private GlobalData() {}
public void LoadData() {}
}
我的目标是在两个库都导入的情况下避免两次存储重叠数据。为了做到这一点,我想利用继承,这样我就可以避免尽可能多地复制“ LoadData”逻辑-并让使用librar(y / ies)的应用程序确定需要哪个。>
从我读到的内容来看,Decorator pattern似乎很有用,因为我可以在GlobalData中存储对MasterData的引用。但是,我认为在仅需要GlobalData的应用程序中这将失败。我知道让两个Singleton都实现一个接口可以工作,但这会导致加载MasterData道具的逻辑重复。
我想我想知道我想做的事是否可行;如果是的话,将非常感谢您对到达那里的任何帮助!