2017-05-08 5 views
0

Vor kurzem habe ich eine praktische Art und Weise angenommen, dass baumartige Struktur Mitglieder sich ihre übergeordneten Knoten sind zu machen:Instanz in get-Parameter-Methode erstellen? bekanntes Muster oder?

private metaCollection<metaPage> _servicePages; 
/// <summary> 
/// Registry of service pages used by this document 
/// </summary> 
[Category("metaDocument")] 
[DisplayName("servicePages")] 
[Description("Registry of service pages used by this document")] 
public metaCollection<metaPage> servicePages 
{ 
    get 
     { 
     if (_servicePages == null) { 
      _servicePages = new metaCollection<metaPage>(); 
      _servicePages.parent = this; 
     } 
     return _servicePages; 
    } 
} 

(das Konzept ist beispielsweise für die privaten Bereich Methode erhält innerhalb Eigenschaft erstellen)

Ich würde gerne wissen, ob dieses Muster einen allgemein bekannten Namen hat? und noch mehr: Gibt es bekannte Probleme/schlechte Auswirkungen auf solche Praktiken?

Danke!

+3

Etwas relevant für Ihre Frage (beachten Sie den Teil über "faul Initialisierung"): https://softwareengineering.stackexchange.com/questions/82377/should-properties-have-side-effects – hatchet

+1

Ich kann Ihre Aufregung fühlen, aber nein, dort ist kein allgemein bekannter Name dafür, noch ist es ein Muster, weil Sie sehen, a) es ist nicht weit verbreitet, b) nur Sie wissen darüber, und c) es ist eher trivial. –

+1

Ich bin verwirrt mit Ihrer Vorstellung "nur Sie wissen darüber" - für mich scheint unmöglich, niemand konfrontiert Baum Konsistenz Problem und löste es so. Auf der anderen Seite, wenn es wahr ist, sagst du, dass niemand dieses/es-s nicht weit verbreitet benutzt - als ich noch mehr besorgt bin über mögliche Probleme, die später kommen könnten. – hardyVeles

Antwort

1

Ja, es heißt Lazy Initialization. Aus dem Beispiel auf der Wikipedia Lazy Loading page:

faule Initialisierung

Hauptartikel: Lazy initialization

Mit faul Initialisierung, das Objekt träge wird ursprünglich auf null geladen wird, und jede Anfrage für die Objekt prüft auf Null und erstellt es "vor Ort", bevor es zuerst zurückgegeben wird, wie in diesem C# -Beispiel:

Verwandte Themen