假设我有一个对象的构造函数,该对象需要大约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而不进行所有这些检查?我正在考虑使用构建器模式并在构建器中进行所有检查,但它仍然看起来很难看。
答案 0 :(得分:1)
Builder模式。有效的Java有一个很好的章节。
或者您可以将其中一些参数封装在自己的对象中以减少数量