J'ai actuellement une implémentation de cache (en utilisant des tableaux) pour les calculs lourds effectués pendant la simulation. La structure du cache est la suivante:Comment refactoriser/étendre le modèle suivant
La façon dont cela fonctionne:
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.
Maintenant, je suis en train d'ajouter de nouveaux calculs spécifiques à un certain scénario, et wouldn Il ne convient pas de les placer dans CalculationsAbstract
, Calculations
et CalculationsCache
, mais ScenarioA utiliserait toujours les calculs existants dans les anciennes classes. J'essaie d'ajouter les nouveaux calculs et leurs tableaux dans de nouvelles classes nommées ScenarioACalculations
et ScenarioACalculationsCache
, tout comme cela a été fait pour Value1, Value2, ... etc, mais je suis confus quant à la façon dont ces nouvelles classes seraient s'intégrer dans le modèle existant.
C'est ce que j'ai essayé de le faire:
internal interface IScenarioACalculations
{
float GetScenarioAValue5();
}
ScenarioACalculations : Calculations, IScenarioACalculations
ScenarioACalculationsCache : CalculationsCache, IScenarioACalculations
Étant donné que tout au long de mon projet, je tiens seulement une référence au type CalculationsAbstract
(comme dans l'exemple de code ci-dessus), et je ne peux pas jeter mon IScenarioACalculations
object à CalculationsAbstract
, quelle serait la meilleure façon d'ajouter des calculs ScenarioA et éventuellement ScenarioB ... etc dans le futur?
Désolé de faire cela longtemps.
Merci.