у меня такой класс
public class OwnerWithholding
{
private decimal ManagementFeePct;
private decimal TotalManagementFee;
private decimal OperationalFeesPct;
private decimal TotalOperationalFees;
}
И у меня есть метод расчета, который создает объект этого класса, заполняет его некоторыми арифметическими операциями и возвращает этот объект.
public OwnerWithholding CalculationMethod1(Reservation r, SqlConnection conn)
{
OwnerWithholding result = new OwnerWithholding();
// result.ManagementFeePct = some data from Fees table in DB + value
//from another db - constant value..
// Also with other properties - with some operations on data
//result.TotalManagementFee = ..
// result.OperationalFeesPct = ..
// result. TotalOperationalFees = ..
return result;
}
И теперь он работает нормально. Но этот метод расчета является лишь одним из вариантов заполнения данных.
Есть еще один метод расчета, реализованный совершенно по-другому, но заполняющий точно такие же свойства объекта. И у меня их может быть больше.
Мне нужен паттерн, который позволил бы мне создавать объекты одного класса, просто указав метод расчета, который нужен. Мне нравится шаблон стратегии, где алгоритмами будут методы, заполняющие объекты, которые их вызвали. Но выглядит не очень. Может быть, фабричный метод здесь был бы уместнее, но я не знаю, как его реализовать.
BuilderWithCalculationMethodA
иBuilderWithCalculationMethodB
и т. д. -- если вы можете выделить методы расчета, вы приблизитесь к паттерну стратегии. Почему это выглядит не очень хорошо? - person Corak   schedule 10.10.2019calculationMethod.SetCalculationStrategy(new CalculationMethod1()); return calculationMethod.CreateAndFillObject;
Не так ли? - person AtlasPromotion   schedule 10.10.2019