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

46 lines
1.7 KiB
C#

using Qdp.Pricing.Base.Enums;
using Qdp.Pricing.Library.Common.Interfaces;
using Qdp.Pricing.Library.Options.Products.Spread.Engines.Analytical;
namespace YLErp.BLL.Calculation.Engine
{
class SpreadEngineFactory : OptionEngineFactoryBase
{
public static SpreadEngineFactory Instance { get => _instance ?? (_instance = new SpreadEngineFactory()); }
protected SpreadEngineFactory() { }
protected static SpreadEngineFactory _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 "ANALYTICALSPREADOPTIONKIRKENGINE":
return new AnalyticalSpreadOptionKirkEngine();
case "GENERICMONTECARLOENGINE":
return CreateGenericMonteCarloEngine(additionalParams);
default:
return DefaultEngine(exercise);
}
}
}
private static IEngine DefaultEngine(OptionExercise exercise, params object[] additionalParams)
{
return string.IsNullOrWhiteSpace(OptionEngineRepository.SpreadDefaultEngine)
? new AnalyticalSpreadOptionKirkEngine()
: OptionEngineRepository.CreateEngine(OptionEngineRepository.SpreadDefaultEngine);
}
}
}