Von überall kommt ihr über dieses Logo auf diese Seite zurück!

Singleton


Ein Singleton ist eine Klasse, die nur ein einziges Exemplar von sich selbst erlaubt. Im Beispiel Windows gibt es die Klasse CApp, welche es nur einmal geben darf. Soll eine zweite erstellt werden, so wird diese nur den Zeiger auf sich selbst zurückgeben.
Gängig hierbei ist es, den Konstruktor als private Methode zu deklarieren, so dass man diese von aussen nicht aufrufen kann. Zusätzlich wird eine Public-Methode erstellt, welche wiederum ein Exemplar erschaffen kann. Diese Methode muss allerdings static sein, damit diese auch ohne ein bereits erschaffenes Exemplar aufrufbar ist.

Datei: Singleton.h
class CSingleton
{
private:
  // Konstruktor ist private
  CSingleton() {};
  // Ein Zeiger auf ein CSingleton, static
  static CSingleton *p;
  // Destruktor ebenfalls private
  ~CSingleton();
public:
  // Diese Methode muss aufgerufen werden, um das Exemplar zu
  // erhalten.
  static CSingleton *getExemplar();
};


Dieser Deklaration folgt die Definition.

Datei: Singleton.cpp
CSingleton * CSingleton::getExemplar()
{
  // Da p auf dem Heap liegt (static), ist es mit NULL vordefiniert.
  if (p) return p;
  return (p=new CSingleton);
}

// Die statische Variable p muss an dieser Stelle nochmal
// definiert werden.
CSingleton * CSingleton::p;



Zurück auf die Vorlesung: Visual C++-Seite <> Homepage