Obecnie zmieniam powszechnie używaną klasę, aby przenieść tak dużo kosztownej inicjalizacji z konstruktora klasy do właściwości Lazy Initialized. Poniżej znajduje się przykład (w C#):Metody inicjalizacji Lazy z właściwościami
Przed:
public class ClassA
{
public readonly ClassB B;
public void ClassA()
{
B = new ClassB();
}
}
Po:
public class ClassA
{
private ClassB _b;
public ClassB B
{
get
{
if (_b == null)
{
_b = new ClassB();
}
return _b;
}
}
}
Istnieje uzasadniona niewiele więcej z tych właściwości w klasie mam zmienianie, a niektóre nie są używane w pewnych kontekstach (stąd lenistwo), ale jeśli zostaną użyte, prawdopodobnie będą wywoływane wielokrotnie.
Niestety, właściwości są często używane również w klasie. Oznacza to, że istnieje możliwość użycia zmiennej prywatnej (_b) bezpośrednio przez metodę bez jej zainicjowania.
Czy istnieje sposób udostępnienia tylko klasy publicznej (B) w klasie, a nawet alternatywnej metody z tą samą wartością inicjowaną, kiedy jest potrzebna?
to zamieszczać Od programistów (nie wystarczy prywatną podobno): https://softwareengineering.stackexchange.com/questions/34270/best-methods-for-lazy-initialization-with-properties
@chibacity: Dzięki za retag –