2

このアプローチが正しいかどうか、またはこれを行うためのより良い方法があるかどうかを知りたいです。

基本的に、他の多くのクラスを変数として持つ Person クラスがあり、各カスタム クラスは Person ID を渡すことによってインスタンス化され、そのクラスはその ID を使用して必要なデータを取得します。プロパティを介して変数クラスを公開します。

現在、Person クラスのインスタンスを作成するときに変数クラスをインスタンス化しています。これらの数が多いということは、Person クラスのインスタンス化にかかる時間が長くなっていることを意味します。私の考えは、変数クラスのインスタンス化を Property 宣言に移動し、まだ行われていない場合はここで If ステートメントを使用してインスタンス化することでした。

上で述べたように、このアプローチは正しいですか、それともより良い方法ですか?

ありがとう

4

2 に答える 2

2

あなたが説明しているテクニックには用語があります。それは「遅延読み込みプロパティ」と呼ばれます。「フロントロード」コンストラクターからこのオブジェクトへの負荷を分散するのに間違いなく役立つはずです。

別のメモとして、あなたが説明していることは、このコードの保守性に悪影響を及ぼす可能性が高い、ひどく密結合されたオブジェクト モデル (まだ持っていない場合) になるようです。ただし、そのトピックに関する深刻な論文や、それ以外の方法で作業する方法が、実際にこの質問の範囲内にあるとは思いません。

于 2008-11-26T21:42:13.887 に答える
2

明確にするために:アクセサーのゲッターでクラスをインスタンス化することを意味する場合、はい、これは優れたアプローチです-遅延読み込みと呼ばれます。

例えば

public Property ChildClass as PersonChildClass

   Get

      if _childClass is Nothing          
          _childClass = new PersonChildClass(_personId)
      End If
      return _childClass
  End Get
End Property
于 2008-11-26T21:49:05.027 に答える