ファクトリクラス-オブジェクトにデータを入力する必要がありますか?

StackOverflow https://stackoverflow.com/questions/189733

  •  06-07-2019
  •  | 
  •  

質問

オブジェクトを構築して返すFactoryクラスを作成します。私は通常、データアクセスレイヤーですべてのデータを処理しますが、目標を達成できるとは思いません。私がやりたいのは、SQLDataReaderを使用してデータ情報をすばやく読み取り、ファクトリから返されるオブジェクトを設定することです。これは馬鹿げたアイデアですか?より良いアプローチはありますか?可能であれば、DALからDataSetを返すだけではなく、パフォーマンスと保守性の問題ですか?

役に立ちましたか?

解決

この方法は2つの主な利点を提供するため、ほとんどの場合、これは良い考えです:

  1. この方法により、データアクセスとビジネスロジックを分離できます。つまり、データベースの設計を変更しても、上位層のアルゴリズムを変更する必要はありません。

  2. OOの観点からは、一部の純粋なデータをオブジェクトに変換し、オブジェクトに動作を追加することもあります。これにより、コードの保守と再利用が容易になります。

他のヒント

SQLDataReaderからロードするすべてのデータを使用することが確実な場合は、はい、工場での構築時に実行できます。ただし、データセットに多数のフィールドがあり、そのうちのごく一部しか使用されない場合は、アクセサーが呼び出されたときにデータをデマンドロードする方が、リソースをより適切に使用できます。

とはいえ、すべての「ピース」が手元にあるときに工場にロードすることをお勧めします。正しくない場合は、何を修正する必要があるかがわかります。常に動作する可能性のある最も単純なものから始めます。

工場の予想される使用状況に依存すると言います。これが、データベースからのデータをビジネスオブジェクトに取り込むために使用されるデータアクセスレイヤーのファクトリである場合は、そうです。 ( IRepository パターンは何かこのような...並べ替え)。

あなたの工場がデータアクセスコードの近くにあることを意図していない場合は、それらを分離しておきます。 単一責任の原則を忘れないでください。変更する1つの理由。ファクトリがオブジェクトにデータを入力するだけの場合は適切な使用方法ですが、他の操作に加えてデータをオブジェクトに入力する場合は、データを追加しないことをお勧めします。

どちらの方法でもトレードオフがあります。したがって、一般的には、オブジェクトをできるだけシンプルにできるだけ長く保ちたいと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top