【问题标题】:Populate Property Object during Property Call在属性调用期间填充属性对象
【发布时间】:2010-09-24 05:57:48
【问题描述】:

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

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

目前,当我创建 Person 类的实例时,我正在实例化变量类,而这些变量的数量很大,这意味着实例化 Person 类所需的时间正在增加。我的想法是将变量类的实例化移动到 Propertie 声明中,然后在此处使用 If 语句来实例化它(如果尚未完成)。

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

谢谢

【问题讨论】:

  • @Matt - 那时是延迟加载的属性,我不知道它被称为,@All what are the alternatives?

标签: vb.net properties class-constructors


【解决方案1】:

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

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

【讨论】:

  • 嗨,马特,是的,我知道我正在创建的课程很差,但我是该项目 4 年内的第五个开发人员,而且它处于非常差的状态!我想在处理数据库结构之前先创建一个业务层,然后我会回去改进它们。完成是最重要的事情。
  • 我不想给人的印象是你的类本质上是“差”的,只是在一个类中有这么多不同的依赖项就是所谓的“代码味道”。该应用程序很可能难以维护,并且可能难以进行单元测试。
【解决方案2】:

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

例如

public Property ChildClass as PersonChildClass

   Get

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

【讨论】:

  • 嗨,是的,这就是我的意思,但马特先命名了它,所以我会接受他的回答,谢谢,尽管我也会投票赞成你的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
相关资源
最近更新 更多