0

私は持っている:

  • Raw Object : システムにインポートする前の生データが含まれます
  • モジュール #1 : Raw オブジェクトを検証する Validator
  • モジュール #2 : 検証済みの生データ (無効なデータは削除されました) を使用してリアル オブジェクトを生成するアップデーター

モジュール #1 は、ItemCode (単なる例であり、実際のキーの数は数十です) がデータベースに存在するかどうかを判断する必要があります。モジュール #2 は、データベースでItemCodeを照会してItem オブジェクトを取得する必要があります。

開発者は、未加工のオブジェクトにエイリアン プロパティ.TempItemを追加して、モジュール #1 がItem オブジェクト.TempItemプロパティに割り当てるようにしたいと考えています (これは非常に簡単なためです) 2 回目のデータベースのクエリ。

私の技術専門家は、それは良くないとアドバイスしています。

プログラミングの原則とベスト プラクティスに従いたいのですが、方法がわかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

1

モジュール #1 と #2 で得られるのは、パイプライン プロセスです。#1 の出力は #2 に渡されます。#1 が既に確認した、#2 が必要とする情報は、キャッシュすることができます (ほぼ間違いなくキャッシュする必要があります)。

パイプラインを介してこの状態情報を渡す追加のオブジェクトを作成します (@astander は辞書を提案しますが、多くの場合、必要なデータを正確に格納するハードコードされたオブジェクトは、記述が簡単で、はるかに使いやすく、保守しやすいでしょう)。

「tempitem」を使用することは本質的に同じメカニズムですが、実装が不十分です - 考え方は同じですが (データベースから同じ情報を複数回読み取らないでください)

状態オブジェクトをパイプラインに渡すことで、パイプライン プロセッサを疎結合に保ちます (#2 は #1 について知る必要はありません。渡された状態情報に基づいて動作するだけです)。これにより、新しいパイプライン ステージを簡単に追加できます。または将来的にモジュールをリファクタリングします。別のクラス内でデータを渡すことにより、システムを介して渡される新しい状態データを追加することも非常に簡単になります。

于 2012-07-20T08:01:24.620 に答える
1

生のオブジェクトに一時アイテムを追加する必要はないと思います。

キャッシュを使用して、オブジェクトをディクショナリ/リストに保存し、それを Module2 に渡してルックアップに使用できます。

Module2 では、オブジェクトがキャッシュされたディクショナリ/リストにあるかどうかを確認できます (キーに基づいて値を検索できるので、ディクショナリの方が簡単です)。オブジェクトが存在しない場合は、データベースからのみロードします。

于 2012-07-20T05:54:36.157 に答える