Vb.net 在属性调用期间填充属性对象

Vb.net 在属性调用期间填充属性对象,vb.net,properties,class-constructors,Vb.net,Properties,Class Constructors,我想知道这种方法是否正确,或者他们的方法是否更好 我有一个基本的Person类,它有许多其他类作为变量,每个自定义类通过传递Person ID进行实例化,然后该类使用该ID检索它需要的数据。我通过属性公开变量类 当前,当我创建Person类的实例时,我正在实例化变量类,其中的大量实例意味着实例化Person类所需的时间正在增长。我的想法是将变量类的实例化移动到属性声明中,然后在这里使用If语句来实例化它(如果尚未完成) 正如我上面所说的,这种方法是正确的还是他们的方法更好 谢谢您所描述的技术有一

我想知道这种方法是否正确,或者他们的方法是否更好

我有一个基本的Person类,它有许多其他类作为变量,每个自定义类通过传递Person ID进行实例化,然后该类使用该ID检索它需要的数据。我通过属性公开变量类

当前,当我创建Person类的实例时,我正在实例化变量类,其中的大量实例意味着实例化Person类所需的时间正在增长。我的想法是将变量类的实例化移动到属性声明中,然后在这里使用If语句来实例化它(如果尚未完成)

正如我上面所说的,这种方法是正确的还是他们的方法更好


谢谢

您所描述的技术有一个术语;它被称为“延迟加载属性”。它肯定有助于分散您在这个对象上的负载,使其远离“前加载”构造函数


另一方面,听起来您所描述的将导致一个非常紧密耦合的对象模型(如果您还没有),这可能会对代码的可维护性产生负面影响。然而,我不认为一篇关于这个主题的严肃论文以及如何在其他方面工作真正在这个问题的范围之内。

只是澄清一下:如果你的意思是在访问器的getter上实例化类,那么是的,这是一个很好的方法-被称为延迟加载

乙二醇


嗨,马特,是的,我知道我正在创建的课程很差,但我是这个项目在4年内的第5个开发人员,它的状态非常差!在处理数据库结构之前,我想先创建一个业务层,然后再回去改进它们。整理是mo的首要关注点。我不想给人这样的印象,即你的类天生就“差”,只是在一个类中有那么多不同的依赖关系,这就是所谓的“代码气味”。该应用程序很可能很难维护,而且可能很难进行单元测试。@Matt-当时是惰性加载属性,我不知道它被称为,@All whatare the alternations?嗨,是的,这就是我的意思,但是Matt首先命名了它,所以我会接受他的答案,谢谢,不过我也会投票支持你的答案!
public Property ChildClass as PersonChildClass

   Get

      if _childClass is Nothing          
          _childClass = new PersonChildClass(_personId)
      End If
      return _childClass
  End Get
End Property