using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve; using StructureHelperLogics.NdmCalculations.Analyses.Curvatures; using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams; using StructureHelperLogics.NdmCalculations.Cracking; using System; using System.Collections.Generic; using System.Text; namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.Logics { public class CalculatorCloningStrategyContainer : ICalculatorCloningStrategyContainer { private ICloningStrategy cloningStrategy; private IUpdateStrategy valueDiagramCalculatorStrategy; private IUpdateStrategy curvatureCalculatorStrategy; public IUpdateStrategy ForceCalculatorStrategy => new ForceCalculatorUpdateCloningStrategy(cloningStrategy); public IUpdateStrategy CrackCalculatorStrategy => new CrackCalculatorUpdateCloningStrategy(cloningStrategy); public IUpdateStrategy LimitCurvesCalculatorStrategy => new LimitCurvesCalculatorUpdateCloningStrategy(cloningStrategy); public IUpdateStrategy ValueDiagramCalculatorStrategy => valueDiagramCalculatorStrategy ??= new ValueDiagramCalculatorUpdateCloningStrategy(cloningStrategy); public IUpdateStrategy CurvatureCalculatorStrategy => curvatureCalculatorStrategy ??= new CurvatureCalculatorUpdateCloningStrategy(cloningStrategy); public CalculatorCloningStrategyContainer(ICloningStrategy cloningStrategy) { this.cloningStrategy = cloningStrategy; } } }