我目前正在更改一个广泛使用的类,以将尽可能多的昂贵初始化从类构造函数转移到惰性初始化属性中。下面是一个示例(在 c# 中):
前:
public class ClassA
{
public readonly ClassB B;
public void ClassA()
{
B = new ClassB();
}
}
后:
public class ClassA
{
private ClassB _b;
public ClassB B
{
get
{
if (_b == null)
{
_b = new ClassB();
}
return _b;
}
}
}
在我正在更改的类中还有相当多的这些属性,有些在某些情况下没有使用(因此是懒惰),但如果它们被使用,它们很可能会被重复调用。
不幸的是,这些属性也经常在类内部使用。这意味着私有变量 (_b) 有可能直接由方法使用,而无需对其进行初始化。
有没有办法在类中只提供公共属性(B),或者甚至是在需要时具有相同初始化的替代方法?
这是从程序员转发的(显然不够主观): https ://softwareengineering.stackexchange.com/questions/34270/best-methods-for-lazy-initialization-with-properties