ビーンフレンドリーなクラスを書きたい。init()
私は、必要なパラメーターをコンストラクターからセッターに移動する (そして初期状態のセットアップが完了したらメソッドを使用する) 傾向を (主に Bean で) 観察しました。
Java オブジェクトと同様に、Bean インフラストラクチャーなしでクラスを使用できるようにしたいので、このメソッドは私にとって重要です。私が想像しているように、すべてのメソッドassert styleでオブジェクトの適切な状態を確認する必要があります。
上記の簡単なデモ:
class A {
public int x;
public int y;
private int sum;
private boolean initialized = false;
public void init() {
sum = x + y;
initialized = true;
}
private void initCheck() {
if (!initialized) {
throw new IllegalStateException("Uninitialized object.");
}
}
public int getXMulSum() {
initCheck();
return x * sum;
}
public int getYMulSum() {
initCheck();
return y * sum;
}
}
より良い習慣はありますか?