Chris: Was ist ein Singleton?

Hallo PHP-Programmierer,

ich lese mich in PHP-OOP ein und es begenet mir immer wieder der Begriff "Singleton". Es gibt zwar dutzende von Seiten, aber mir ist noch nicht klar geworden, was man sich wirklich darunter vorstellen muss. Kommt der Begiff vom Namen seines Erfinders, oder hat er eine deutsche Entsprechnung?

LG
Chris

  1. Hallo!

    [...] es begenet mir immer wieder der Begriff "Singleton". Es gibt zwar dutzende von Seiten, aber mir ist noch nicht klar geworden, was man sich wirklich darunter vorstellen muss.

    Ein Singleton ist allgemein eine Klasse, von der es nur eine einzige Instanz geben kann. Eine solche Klasse bietet keine Methode, eine neue Instanz zu erzeugen, sondern nur Methoden, eine vorhandene Instanz zu verwenden. Damit wird sichergestellt, dass alle anderen Klassen mit dem selben Objekt arbeiten, sinnvoll bspw. bei Klassen, die Konfigurationselemente enthalten.

    Auch wenn Du speziell nach PHP fragst (habe mit PHP noch nicht objektorientiert gearbeitet), verdeutlicht folgender Java-Singleton die Sache vielleicht etwas:

    public class Config {

    private Config config = null;
      private String url = null;

    // Der Konstruktor ist von "aussen" nicht aufrufbar!
      private Config() {
        this.url = "192.168.1.1";
      }

    // Einzige Möglichkeit, eine Instanz zu "erzeugen"
      public Config getInstance() {
        if(this.config == null) {
          this.config = new Config();
        }
        return this.config;
      }

    public String getUrl() {
        return this.url;
      }

    public void setUrl(String newUrl) {
        this.url = newUrl;
      }
    }

    Nach "außen" hin bietet die Klasse im Beispiel nur die Methoden getInstance(), setUrl() und getUrl() an. Wenn irgendeine andere Klassen die Variable URL nun über die Methode setUrl() ändert, hat dies immer globale Auswirkungen. Ein Singleton bietet sich hier an, da es unsinnig wäre, wenn jede Klasse eine eigene Config-Instanz hätte und diese u.U. unterschiedliche URLs enthielten.

    Oliver

    --
    Wozu Socken? Sie schaffen nur Loecher!
  2. Moin,

    ich lese mich in PHP-OOP ein und es begenet mir immer wieder der Begriff "Singleton". Es gibt zwar dutzende von Seiten, aber mir ist noch nicht klar geworden, was man sich wirklich darunter vorstellen muss. Kommt der Begiff vom Namen seines Erfinders, oder hat er eine deutsche Entsprechnung?

    Es gibt einen ganzen Artikel [1] über Singletons und einige andere Entwurfsmuster [2].

    [1] http://www.php-mag.de/itr/online_artikel/psecom,id,466,nodeid,62.html
    [2] http://www.php-mag.de/itr/online_artikel/psecom,id,490,nodeid,62.html

    --
    Gruss Martin