Files
zszq-trs/YLErpDAL/BLL/Calculation/Engine/RainbowEngineFactory.cs
T
2024-05-09 14:06:26 +08:00

50 lines
1.9 KiB
C#

using Qdp.Pricing.Base.Enums;
using Qdp.Pricing.Library.Common.Interfaces;
using Qdp.Pricing.Library.Options.Products.Rainbow.Engines.Analytical;
namespace YLErp.BLL.Calculation.Engine
{
class RainbowEngineFactory : OptionEngineFactoryBase
{
public static RainbowEngineFactory Instace => _instance ?? (_instance = new RainbowEngineFactory());
protected RainbowEngineFactory() { }
protected static RainbowEngineFactory _instance;
public override IEngine GetEngine(string engineName = null, OptionExercise exercise = OptionExercise.European, params object[] additionalParams)
{
if (string.IsNullOrWhiteSpace(engineName))
{
return DefaultEngine(exercise, additionalParams);
}
else
{
switch (engineName.ToUpper())
{
case "ANALYTICALRAINBOWOPTIONENGINE":
return new AnalyticalRainbowOptionEngine();
case "GENERICMONTECARLOENGINE":
return CreateGenericMonteCarloEngine(additionalParams);
default:
if (engineName.IsValidEngineName())
{
return OptionEngineRepository.CreateEngine(engineName);
}
else
{
return DefaultEngine(exercise);
}
}
}
}
private static IEngine DefaultEngine(OptionExercise exercise, params object[] additionalParams)
{
return string.IsNullOrWhiteSpace(OptionEngineRepository.RainbowDefaultEngine)
? new AnalyticalRainbowOptionEngine()
: OptionEngineRepository.CreateEngine(OptionEngineRepository.RainbowDefaultEngine);
}
}
}