假设我有一个对象的构造函数,它接受大约 6 个参数,但其中两个或多个参数是相关的,例如:
LoanProduct(CurrencySum maxSum, CurrencySum minSum, Interest interest, etc)
CurrencySum是两个对象的包装器:BigDecimal和表示货币的Enum 。
Interest是一个具有两个子类的接口:FixedInterest和VariableInterest。
VariableInterest包装了一个表示固定值的BigDecimal和一个VarIndex对象,该对象是感兴趣的变化位 - VarIndex 基本上是 libor 1m、libor 2m 等(VariableInterest = BigDecimal fixedValue + VarIndex variableValue)
现在,让我烦恼的一点是,当创建LoanProduct时,我必须在构造函数中检查maxSum和minSum是否具有相同的Currency,并且如果VariableInterest拥有与该Currency对应的VarIndex,因为 LoanProduct 欧元可以'没有为 libor 设置 VarIndex,它必须是 euribor。
有没有一种优雅的方式来构造 LoanProduct 而无需所有这些检查?我正在考虑使用构建器模式并在构建器中进行所有检查,但它看起来仍然很难看。