2

各コンストラクターで作成されている間にいくつかの検証を行っている不変オブジェクトで動作するレガシーアプリケーションがあります。すべてのオブジェクトは独自の検証を行います。f. 元。長さチェック、範囲チェックなど。

ビジネス オブジェクトは次のようになります。

public class MyObject {
   private FieldA fieldA;
   private FieldB fieldB;
   ...
}

オブジェクトは、データをロードする cobol サーバーを呼び出すことによって作成されます... このコードは非常に汚いように見えます:

if (isFieldSet(response.getValueA())) {
   myObject.setFieldA(new FieldA(response.getValueA()));
}

if (isFieldSet(response.getValueB())) {
   myObject.setFieldA(new FieldA(response.getValueB()));
}

...

また、オブジェクトがたくさんあるので、if ステートメントもたくさんあります。リフレクションを使用して改善し、クラスを動的に作成できました。

myObject.setFieldA(createField(A.class, response.getValueA()));
myObject.setFieldA(createField(B.class, response.getValueB()));

これにより、私のコードはより良くなりますが、はるかに遅くなります。誰かがこの問題を解決するエレガントな方法を見ていますか?

よろしく、

マイク

4

1 に答える 1

0

私が正しければ、非常に多くの If ステートメントを削除する必要があります。応答を受け取り、それに応じて出力を返すテンプレート エンジンを使用するとよいと思いませんか? 優れた点は、入力応答に基づいてオブジェクト作成ロジックを駆動する If ステートメントをテンプレートに 1 つだけ含めることができることです。Velocity Template Engineを試してみてください。

于 2012-10-04T09:43:48.767 に答える