これは私が数回遭遇したもので、まだ満足のいく答えを見つけることができませんでした。これはかなりばかげているようだが、しばらくの間これをグーグルで見つけた後、何か良いものを考え出すことができなかった。Javaのコンストラクタで複数のオプションの引数 - 指数関数のコンストラクタ数
私は20のインスタンス変数を持つクラスを持っているとしましょう。それぞれはオプションです(初期化されるかどうか)。
今私は、いくつかのインスタンス変数がある場合はすべてのケースを処理したいと思うし、別のシグネチャを持つコンストラクタを作成することもできますが、ここでは20が必要です。2^20 = 1,048,576すべてのケースを処理するコンストラクタ!それは...非常に最適ではないようです、あなたは同意しますか?
このブルートフォースのアプローチでは、基本的に2^n個のコンストラクタを構築する必要があります。ここでnはインスタンス変数の数です。より良い方法を探したいと思います。
私はこの問題の解決策をいくつか見てきましたが、データの前提に基づいていると思いますが、私の場合はこれらの変数をそれぞれ初期化したりランダム化したりすることはできません。初期化。
私はいくつかのデザインパターンや、私はもう少し私のコードを作るために適用できるアイデアを探しています...(保守性なしには、私は1M +コンストラクタ:)
感謝を作成していない心配しないでください。
豆のパターン。コンストラクターには引数はなく、すべてのパラメーターはセッターを介して入ります。 – bmargulies
私は20のインスタンス変数を持っていると言っていましたが、実際には私はもっとたくさん持っています。私は20人のセッターに電話したくありません!途中で矛盾した状態になっている可能性がありますが、これは非常に悪い解決策のようです。 –
これはまた私のクラスを不変にすることを禁じます。 –