2

私は次の問題を抱えています:

フレームワークはDBテーブルからクラスを生成し、各テーブル列はクラス変数(フィールド)です。生成されたクラスには30を超えるフィールドがあり、パラメーターのないコンストラクターは1つだけです。

そのクラスのインスタンスを作成するには、いくつかのセッターを30回使用する必要があります。これは、不整合の原因になります。

生成されたクラスを編集できないため、パラメーターまたはBuilderパターンでコンストラクターを直接使用することはできません。これにアプローチするための最良の方法は何ですか-ラッパークラス、スレッドセーフメソッド、古典的なパターン?

4

3 に答える 3

2

Builder新しいオブジェクトを作成するたびにすべてのフィールドをデフォルト値に初期化し、標準のように動作する外部クラスを作成できますBuilder

于 2012-07-24T12:31:23.600 に答える
1

BeanBuilder内側に反射を使うクラスを作ることで、この問題を自分で解決しました。startBeanBeanを指定してから、のようなメソッドを呼び出しますvalue。これは、XMLツリーを構築するのと同じように、Beanにデータを入力するのと同じです。

あなたが型安全性に恋をしているなら、あなたはあなたが持っているその豆で特に働くあなた自身のために同様のクラスを作ることができます。

于 2012-07-24T12:38:06.647 に答える
0

Builderパターンを使用できます。たとえば、フィールドが、、のオブジェクトがある場合は、次CarのようにBuilderを使用できます。powerweightmaxSpeedcolor

CarBuilder{
private Car car = new Car();

public CarBuilder(int power,int weight){
car.setPower(power);
car.setWeight(weight);
}

public CarBuilder setColor(String color){
car.setColor(color);
return this;
}

public CarBuilder setMaxSpeed(int maxSpeed){
car.setMaxSpeed(maxSpeed);
return this;
}

public Car build(){
return car;
}
}

costructorに必須フィールドを設定し、setterに追加フィールドを設定できます。また、メソッドでいくつかのチェックを実行できますbuild

于 2012-07-24T12:38:55.073 に答える