Singleton Konstruktor mit Parameter?!



  • Hallo Forum,

    ich verwende bei einer meiner Klassen das Singleton-Pattern.
    Allerdings will ich meinem Konstruktor Parameter übergeben, die jedoch von außerhalb der Klasse kommen und ich sie somit im static-Property nicht übergeben kann!

    Wie könnte ich denn dieses Problem lösen??

    Meine Idee ist, dass ich eine Methode 'GetInstance(Parameter)' schreibe, die die Parameter entgegennimmt und dann dem Konstruktor übergibt!
    Zum Beispiel so:

    public class Singleton
    {
       private static Singleton instance;
    
       private Singleton(string s) {}
    
       public static Singleton GetInstance(string s)
       {
          if (instance == null)
          {
             instance = new Singleton(s);
          }
    
          return instance;
       }
    }
    

    Zur Info:
    [Implementing Singleton in C#]
    http://msdn.microsoft.com/en-us/library/ms998558.aspx

    Grüße und danke im Voraus für die Hilfe!



  • RCD schrieb:

    Meine Idee ist, dass ich eine Methode 'GetInstance(Parameter)' schreibe, die die Parameter entgegennimmt und dann dem Konstruktor übergibt!

    Ich würde sagen das dies ein Designfehler ist.

    Wenn ich mir die Fälle anschaue in denen ich Singletons verwendet habe (was aber nicht sehr häufig ist), so sollten diese auch von der Aufrufreihenfolge etc. unabhängig sein. Wie willst du sicherstellen, das wirklich der erste GetInstance-Aufruf die richtigen Parameter übergibt?

    cu André
    P.S: Ganz davon abgesehen das ich die Singleton-Umsetzung präferiere, die sich nach Außen hin als statische Schnittstelle (ohne GetInstance) präsentiert, und innerhalb der Schnittstelle GetInstance aufruft...


Anmelden zum Antworten