构造函数中的参数检查

时间:2012-09-08 08:19:47

标签: java constructor typechecking

假设我有一个对象的构造函数,该对象需要大约6个参数,但两个或多个参数是相关的,例如:

LoanProduct(CurrencySum maxSum, CurrencySum minSum, Interest interest, etc)

CurrencySum 是两个对象的包装: BigDecimal Enum 代表货币。

兴趣是一个包含两个子类的界面: FixedInterest VariableInterest

VariableInterest 包装表示固定值的 BigDecimal 和感兴趣的变量位的 VarIndex 对象 - VarIndex基本上是libor 1m ,libor 2m等(VariableInterest = BigDecimal fixedValue + VarIndex variableValue)

现在,让我烦恼的是,当创建 LoanProduct 时,我必须检查构造函数是否 maxSum minSum 具有相同的货币,如果 VariableInterest 包含与货币对应的 VarIndex ,则为欧元的LoanProduct不能为libor设置VarIndex,它必须是euribor。

有没有一种优雅的方法来构建LoanProduct而不进行所有这些检查?我正在考虑使用构建器模式并在构建器中进行所有检查,但它仍然看起来很难看。

1 个答案:

答案 0 :(得分:1)

我认为

Builder模式。有效的Java有一个很好的章节。

或者您可以将其中一些参数封装在自己的对象中以减少数量