約 6 つのパラメーターを受け取るオブジェクトのコンストラクターがあるとしますが、2 つ以上のパラメーターが関連しているとします。次に例を示します。
LoanProduct(CurrencySum maxSum, CurrencySum minSum, Interest interest, etc)
CurrencySumは、通貨を表すBigDecimalとEnumの 2 つのオブジェクトのラッパーです。
Interestは、FixedInterestとVariableInterestの 2 つのサブクラスを持つインターフェイスです。
VariableInterestは、固定値を表すBigDecimalと、対象の可変ビットであるVarIndexオブジェクトをラップします。VarIndex は、基本的に libor 1m、libor 2m などです (VariableInterest = BigDecimal fixedValue + VarIndex variableValue)。
ここで少し気になるのは、LoanProductが作成されるときに、 maxSumとminSumが同じCurrencyであるかどうか、VariableInterestがそのCurrencyに対応するVarIndexを保持しているかどうかをコンストラクターでチェックインする必要があることです。 libor に VarIndex が設定されている場合、それは euribor でなければなりません。
このすべてのチェックなしで LoanProduct を構築するエレガントな方法はありますか? ビルダーパターンを使用してビルダーですべてのチェックを行うことを検討していますが、それでもいようです。