1

複合クラスPharmaProduct(製薬会社の製品階層を表す) とそのためのデータベース テーブルがあるとします。PharmaProductデータをオブジェクトにロードする方法は 2 つあります。

(1) オブジェクトがインスタンス化されるときに、オブジェクトツリー全体を構築します。ツリーに変更を加え、ツリーに再帰ループを適用してそれらの変更を永続化します (これは実際に C# がDataSet機能する方法です)。

(2) ノードをロードします。次の場合にのみ、他のノードをロードします。

PharmaProduct GetParent()

また、

List<PharmaProduct> GetChldren()

が呼び出されます (実際にはデータベースへの直接アクセスを行います)。ノードに変更を加えます。そのノードのみを保存します。

このタイプのテーブルには、製薬会社が製造する品目の種類によっては、1,000 のエントリが含まれる場合があります。その場合、最初のアプローチは不器用すぎる(そしてメモリを消費する)と思います。

複合パターンの問題が発生した場合、実際にデータベースにアクセスするにはどうすればよいですか?

4

1 に答える 1

1

Proxyパターンを見てください。これを使用すると、PharmaProductProxyと同じインターフェイスを持つオブジェクトをツリーに配置PharmaProductできますが、アクセス時に遅延ロードされます。

于 2009-10-19T12:42:28.680 に答える