单例继承和装饰器模式

时间:2020-08-03 18:40:49

标签: c# .net memory singleton decorator

我有一组静态数据 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道具的逻辑重复。

我想我想知道我想做的事是否可行;如果是的话,将非常感谢您对到达那里的任何帮助!

0 个答案:

没有答案