У меня есть класс, представляющий объект предметной области, который содержит множество вычисляемых свойств. Большинство вычислений зависит от других свойств, которые также вычисляются. В простейшей форме пример класса мог бы выглядеть примерно так.
public class AnalysisEntity
{
public decimal InputA { get; set; }
public decimal InputB { get; set; }
public decimal InputC { get; set; }
public decimal CalculatedValueA
{
get { return InputA * InputC; }
}
public decimal CalculatedValueB
{
get
{
decimal factor = FactorGenerator.ExpensiveOperation();
return CalculatedValueA / factor;
}
}
public decimal CalculatedValueC
{
get { return InputA * InputB; }
}
public decimal CalculatedValueD
{
get { return (CalculatedValueA * InputB) / CalculatedValueB; }
}
public decimal CalculatedValueE
{
get { return CalculatedValueD / aConstant; }
}
}
Однако это решение оставляет мне следующие проблемы:
Я экспериментировал с использованием объекта калькулятора и шаблона стратегии для установки внутренних полей для свойств, но в итоге я получил слишком длинная управляющая функция, заставляющая производить вычисления. Кроме того, перенос всех вычислений в другой объект превращает исходный объект в анемичный объект предметной области, который я продолжаю читать, следует избегать.
Какие шаблоны проектирования и структуру классов мне следует использовать для решения вышеуказанных проблем?
Спасибо
]