Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Grundlagen der Programmierung: Objektorientiertes Design

Singleton-Pattern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Verwendung eines Singleton-Patterns stellt sicher, dass in einer Klasse ausschließlich ein einziges Objekt existiert. Dies kann z.B. bei Spielfeldern oder Displayanzeigen von Bedeutung sein.

Transkript

Jetzt geht es mal darum, dass wir uns mal dieses Singleton Design pattern etwas näher anschauen. Der Name lässt es ja schon vermuten, das Singleton Entwurfsmuster sagt, dass ich von einer Klasse exakt eine Instanz habe. Und nicht zwei oder drei oder so etwas. Sie fragen sich jetzt vielleicht, wofür kann ich das denn überhaupt gebrauchen? Wenn Sie sich vorstellen, Sie haben eine Klasse, die sich um das Display kümmert, also um die Anzeige auf dem Bildschirm, dann kann es durchaus Sinn ergeben, dass ich sage, ich brauche davon genau eine und nicht zwei. Oder wenn Sie ein Spiel entwickeln und Sie haben ein Spielfeld und Sie möchten, dass sich Figuren auf diesem Spielfeld bewegen, dann wäre es sehr schädlich, wenn Sie ein zweites Spielfeld aus Versehen irgendwie haben und deswegen ist dieses Singleton- Entwurfsmuster ganz hilfreich, um sicher zu gehen, dass ich exakt eine Instanz habe. Und es regelt auch die genaue Art des Zugriffs dieses Entwurfsmusters und das schauen wir uns jetzt einmal direkt im Code an, und zwar in einer Implementierung in Java. Ich habe hier eine Klasse, die heißt MySingleton, das ist eine öffentliche Klasse mit verschiedenen Methoden. Und da möchte ich jetzt dieses Singleton- Entwurfsmuster implementieren. Zunächst einmal habe ich hier einen privaten Konstruktor, eine private Konstruktormethode, die heißt MySingleton, das ist der exakt gleiche Name wie auch tatsächlich die Klasse. Und das besondere ist aber, das ich diesen Konstruktor auf private setze, das bedeutet, ich kann von dieser Klasse nicht einfach problemlos ein Objekt instanzieren, weil diese Konstruktorklasse eben auf privat gesetzt worden ist. Und jetzt geht es los, dass ich dieses Singleton Entwurfsmuster einbaue. Zunächst einmal habe ich hier oben einen placeholder, also einen Platzhalter, das ist eine ganz normale, statische Variable, die heißt MySingleton__me, und ich setze die einfach mal auf leer, also auf null und ich sage, dass ist eine statische Variable, das bedeutet, sie gehört direkt der Klasse und nicht einem davon abgeleiteten Objekt. Und jetzt geht es weiter. Was passiert, wenn jetzt jemand diese Singleton Klasse instanzieren möchte? Das geht eben nicht mehr über einen ganz normalen Konstruktor, sondern ich muss eine öffentliche Klassenmethode, keine Objektmethode, sondern eine öffentliche Klassenmethode, starten und die heißt beispielsweise getInstance, das ist eine durchaus übliche Benamung. Und ich frage jetzt zuerst, existiert hier schon ein Objekt von dieser Klasse, also ich frage nach, ob in dieser MySingleton__me der Wert null enthalten ist oder nicht. Und wenn das der Fall ist, wenn dieses __me noch leer ist, nur dann instanziere ein Objekt von dieser Klasse und wenn das nicht der Fall ist, dann gebe einfach nur dieses Singleton Objekt zurück. Und das ist die Art und Weise, wie ich sichergehen kann, dass von dieser Klasse, MySingleton, wenn überhaupt, dann exakt ein Objekt existiert, denn wenn ich versuche ein zweites Objekt zu instanzieren, dann funktioniert das eben nicht, weil dieses __me schon belegt ist. So implementieren wir Singleton in Java. Schauen wir mal, wie wir es verwenden. Also, ich mache eine ganz normale Abfrage und greife auf diese getInstan-Methode zu und entweder habe ich hier schon ein Objekt, dann bekomme ich es zurück oder es wird einmal erzeugt und ich bekomme dann eben das erzeugte Objekt zurück. Die Verwendung schaut so aus, das ich ganz normal damit arbeite. Es ist ja mehr oder weniger eine ganz normale Klasse beziehungsweise ein ganz normales Objekt. Das heißt, ich kann hier ganz normal auf die Methoden zugreifen, ich kann auch, wie ich das von andern Klassen gewohnt bin, auch direkt auf die Methoden zugreifen, wenn ich eben vorher über dieses getInstance gehe.

Grundlagen der Programmierung: Objektorientiertes Design

Lernen Sie alle Grundbegriffe und Methoden von objektorientiertem Design kennen und holen Sie sich das Rüstzeug, um bald Ihre eigene Softwareprojekte zu starten.

2 Std. 43 min (45 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!