2

假设我有一个对象的构造函数,它接受大约 6 个参数,但其中两个或多个参数是相关的,例如:

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

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

Interest是一个具有两个子类的接口:FixedInterestVariableInterest

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

现在,让我烦恼的一点是,当创建LoanProduct时,我必须在构造函数中检查maxSumminSum是否具有相同的Currency,并且如果VariableInterest拥有与该Currency对应的VarIndex,因为 LoanProduct 欧元可以'没有为 libor 设置 VarIndex,它必须是 euribor。

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

4

1 回答 1

1

在我看来,建造者模式。Effective Java 在这方面有一个很好的章节。

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

于 2012-09-08T08:27:15.497 回答