von Singleton ableiten?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • von Singleton ableiten?

    k wie klaus -)
    Zuletzt geändert von Sandmann1; 17.01.2008, 00:41.

  • #2
    Bist du sicher, dass du 25 einzelne Klassen als Singleton benötigst?
    Oftmals reicht es aus, aktuelle Instanzen statisch zur Verfügung zu stellen, etwa
    PHP-Code:
    $Application->DatabaseConnection 
    anstatt von
    PHP-Code:
    DatabaseConnection::getInstance() 

    Kommentar


    • #3
      $instance als protected deklarieren und getInstantce() überladen - das sollte funktionieren.
      PHP-Code:
      class Singleton {
          protected static 
      $instance;
          public static function 
      getInstance() {}
      }

      class 
      ExtendedSingleton extends Singleton {
          public static function 
      getInstance() {
              if (
      null === self::$instance) {
                  
      self::$instance = new self();
              }
              return 
      self::$instance;
          }
      }

      $obj ExtendedSingleton::getInstance(); 

      Kommentar


      • #4
        Original geschrieben von onemorenerd
        PHP-Code:
        class Singleton {
            protected static 
        $instance;
            public static function 
        getInstance() {}

        Und das wäre dann eher ein Interface, das man implementieren sollte.
        Mein PHP Blog

        Kommentar


        • #5
          Original geschrieben von onemorenerd
          $instance als protected deklarieren und getInstantce() überladen - das sollte funktionieren.
          PHP-Code:
          class Singleton {
              protected static 
          $instance;
              public static function 
          getInstance() {}
          }

          class 
          ExtendedSingleton extends Singleton {
              public static function 
          getInstance() {
                  if (
          null === self::$instance) {
                      
          self::$instance = new self();
                  }
                  return 
          self::$instance;
              }
          }

          $obj ExtendedSingleton::getInstance(); 
          Und was hälst du davon, das Ganze abstrakt zu gestalten?
          PHP-Code:
          abstract class Singleton
          {
              private 
          $_instances = array();

              
          // simple Implementierung
              
          public static function get_instance($class_name)
              {
                  if (!isset(
          self::$_instances[$class_name]))
                  {
                      
          $object = new $class_name();

                      if (
          $object instanceof Singleton)
                      {
                          
          self::$_instances[$class_name] = $object;
                      }
                  }

                  return 
          self::$_instances[$class_name];
              }

          Nieder mit der Camel Case-Konvention

          Kommentar


          • #6
            25 Singletons ist (sorry) irre!

            In einem solchen Fall schreit es nach dem "Registry Design Pattern". (Dieses eine darf dann Singleton sein)
            Und nein, Singeletons sind kein feines Pattern, sie vereinfachen einiges, machen aber die Vererbung kaputt. Zumindest so kaputt, das man sich mehr mit diesem überflüssigen Problem beschäftigen muß als nötig.
            aber das gilt wohl für die meisten selbst gelegten Eier
            Zuletzt geändert von combie; 03.01.2008, 22:41.
            Wir werden alle sterben

            Kommentar


            • #7
              So oder so Murkserei...
              Die Singleton-Funktionalität sollte nicht durch Ableitung in die Klasse gebracht werden müssen~ aber was anderes bleibt einem bei PHP ja nicht übrig...

              Theoretisch sollte es eher ein Mixin sein, so wie es bei Ruby auch gemacht wird:
              http://home.vrweb.de/~juergen.katins...html#sec:mixin
              http://www.ruby-doc.org/stdlib/libdo...doc/index.html

              Dementsprechend ist das glaub ich ziemlich egal, wie ihr euch die Theorie kaputt macht, Hauptsache es funktioniert einwandfrei und einfach...

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Ja von mir aus kann er Singleton auch abstract oder als Interface definieren. Er muß selber wissen, ob er davon Instanzen haben will ...

                Kommentar

                Lädt...
                X