Одиночное наследование и шаблон декоратора - PullRequest
0 голосов
/ 03 августа 2020

У меня есть набор статических c данных, MasterData , которые в настоящее время хранятся как 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() {}
}

Моя цель - избежать двойного сохранения перекрывающихся данных в случаях, когда обе библиотеки импортируются. Для этого я хотел бы использовать наследование, чтобы избежать дублирования как можно большего количества logi c LoadData, а также позволить приложениям, использующим librar (y / ies), решать, что необходимо .

Из того, что я прочитал, кажется, что шаблон Decorator может быть полезен, поскольку я мог бы хранить ссылку на MasterData в GlobalData. Однако я считаю, что это не сработает в приложениях, где нужны только GlobalData. Я знаю, что оба синглтона реализуют интерфейс, но это приведет к дублированию logi c для загрузки свойств MasterData.

Думаю, мне интересно, возможно ли то, что я хочу сделать ; и если это так, мы будем очень благодарны за любую помощь в этом направлении!

...