В настоящее время у меня есть реализация кеша (с использованием массивов) для тяжелых вычислений, выполненных во время моделирования. Структура кэша выглядит следующим образом:Как я могу реорганизовать/расширить следующую модель
Как это работает:
CalculationsAbstract calculationsCache = new CalculationsCache();
// Constructor of CalculationsCache
public CalculationsCache()
{
this.Proxy = new Calculations();
Proxy.Proxy = this;
}
calculationsCache.CalculateValue1();
// Checks "Value1" array for existing value, if not, the actual computation is called
// via Proxy object, value retrieved is cached in array then returned to user.
Теперь я пытаюсь добавить новые вычисления, которые являются специфическими для определенного сценария, и Wouldn чтобы их помещали в CalculationsAbstract
, Calculations
и CalculationsCache
, однако ScenarioA все равно будет использовать существующие вычисления в старых классах.
Я пытаюсь добавить новые вычисления и их массивы в новые классы с именем ScenarioACalculations
и ScenarioACalculationsCache
, как это было сделано для Value1, Value2, ... и т. Д., Но я смущен относительно того, как эти новые классы будут вписываются в существующую модель.
Это то, что я пытался сделать:
internal interface IScenarioACalculations
{
float GetScenarioAValue5();
}
ScenarioACalculations : Calculations, IScenarioACalculations
ScenarioACalculationsCache : CalculationsCache, IScenarioACalculations
Учитывая, что на протяжении всего моего проекта, я только держать ссылку на тип CalculationsAbstract
(как в примере кода выше), и я не могу бросить свою IScenarioACalculations
object to CalculationsAbstract
, что было бы лучшим способом добавить вычисления ScenarioA и, возможно, ScenarioB ... и т. д. в будущем?
Прошу прощения за это.
спасибо.