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

50 lines
2.0 KiB
C#

using Qdp.Pricing.Base.Enums;
using Qdp.Pricing.Library.Common.Interfaces;
using Qdp.Pricing.Library.Options.Products.SyntheticSpread.Engines.Analytical;
namespace YLErp.BLL.Calculation.Engine
{
public class SyntheticNormalSpreadFactory : OptionEngineFactoryBase
{
public static SyntheticNormalSpreadFactory Instance => _instance ?? (_instance = new SyntheticNormalSpreadFactory());
protected SyntheticNormalSpreadFactory() { }
protected static SyntheticNormalSpreadFactory _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 "ANALYTICALSYNTHETICNORMALSPREADOPTIONENGINE":
return new AnalyticalSyntheticNormalSpreadOptionEngine();
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.SyntheticNormalSpreadEngine)
? new AnalyticalSyntheticNormalSpreadOptionEngine()
: OptionEngineRepository.CreateEngine(OptionEngineRepository.SyntheticNormalSpreadEngine);
}
}
}