{"id":3582,"date":"2023-07-28T16:05:41","date_gmt":"2023-07-28T16:05:41","guid":{"rendered":"https:\/\/msgprogramator.sk\/?p=3582"},"modified":"2025-07-07T11:36:35","modified_gmt":"2025-07-07T11:36:35","slug":"java-singleton","status":"publish","type":"post","link":"https:\/\/msgprogramator.sk\/de\/java-singleton\/","title":{"rendered":"Java Entwurfsmuster (design patterns): Singleton"},"content":{"rendered":"<p>Heute werfen wir einen Blick auf das erste <strong>Entwurfsmuster<\/strong> (Java <strong>design patterns<\/strong>) aus der Kategorie der Erzeugungsmuster (<strong>creational atterns<\/strong>) &#8211; Singleton.<\/p>\n<p>Lies mehr \u00fcber weitere Entwurfsmuster \u2013 eine Serie von Entwurfsmustern:<\/p>\n<ul>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-builder\/\">Entwurfsmuster Builder<\/a><\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-prototype\/\">Entwurfsmuster Prototyp<\/a><\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-factory\/\">Entwurfsmuster Factory<\/a><\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-abstract-factory\/\">Entwurfsmuster Abstract Factory<\/a><\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-adapter\/\">Entwurfsmuster Adapter<\/a><\/li>\n<\/ul>\n<h2>Was ist das Entwurfsmuster Singleton?<\/h2>\n<p><strong>Singleton<\/strong> ist ein Entwurfsmuster, das die Erstellung von Instanzen einer Klasse auf eine einzige Instanz beschr\u00e4nkt und einen globalen Zugriff auf diese Instanz erm\u00f6glicht. Mit anderen Worten: Das Singleton Muster stellt sicher, dass es nur eine Instanz einer bestimmten Klasse in Java gibt und dass diese Instanz von \u00fcberall im Programm leicht zug\u00e4nglich ist.<\/p>\n<h2>Welches Problem wird durch das Entwurfsmuster Singleton gel\u00f6st?<\/h2>\n<p>Das Singleton Entwurfsmuster ist n\u00fctzlich, wenn Sie sicherstellen m\u00fcssen, dass in der Anwendung nur eine Instanz der betreffenden Klasse existiert. Sie k\u00f6nnen beispielsweise das Singleton-Muster verwenden, um sicherzustellen, dass es nur eine Instanz eines Datenbankverbindungsobjekts, eines Protokollierungsobjekts oder eines Konfigurationsobjekts in der Anwendung gibt. Dies vermeidet die Verschwendung von Ressourcen und gew\u00e4hrleistet die Konsistenz der Anwendung.<\/p>\n<h2>Beispiel einer Singleton-Implementierung in Java<\/h2>\n<p>Nun zeigen wir, wie das Singleton-Entwurfsmuster in Java implementiert wird.<\/p>\n<p>Wir werden eine Klasse erstellen, die wir Singleton nennen werden.<br \/>\nIn Singleton implementieren wir einen privaten Konstruktor, der die direkte Erstellung einer Instanz verhindert.<\/p>\n<p>Als n\u00e4chstes ben\u00f6tigen wir eine Variable f\u00fcr die Instanz selbst, die wir <em>instance<\/em> nennen. Die Variable ist vom Typ <em>private static<\/em> und wird auf <em>null<\/em> initialisiert.<\/p>\n<p>Die Methode <em>getInstance()<\/em> wird immer aufgerufen, um eine Instanz des Singletons zu erhalten. Wir erstellen und programmieren dies so, dass die Instanz, wenn sie noch nicht existiert, beim ersten Aufruf von <em>getInstance()<\/em> erstellt wird und nachfolgende Aufrufe von <em>getInstance(<\/em> ) die gleiche Instanz zur\u00fcckgeben.<\/p>\n<p>Wir f\u00fcgen der Klasse eine <em>public void<\/em> Methode <em>showMessage<\/em> mit einem beliebigen Text hinzu.<\/p>\n<p><strong><u>Singleton.java<\/u><\/strong><\/p>\n<pre><code class=\"language-java\" data-line=\"\">package designpatterns;\n\npublic class Singleton {\n    \/\/ Pretoze k tejto premennej pristupujeme zo statickej metody,\n    \/\/ musi byt tiez staticka.\n    private static Singleton instance = null;\n\n    \/\/ Privatny konstruktor zabrani vytvoreniu instancie.\n    private Singleton() {\n    }\n\n    \/\/ Pre pristup k instancii budeme pouzivat tuto metodu.\n    public static Singleton getInstance() {\n        if (instance == null) {\n            instance = new Singleton();\n        }\n        return instance;\n    }\n\n    \/\/ Metoda na verifikovanie volania metody na instancii.\n    public void showMessage() {\n        System.out.println(&quot;You have implemented design pattern Singleton.&quot;);\n    }\n}<\/code><\/pre>\n<p>Hier ist ein Beispiel f\u00fcr die Verwendung der Singleton Klasse:<\/p>\n<p><strong><u>Main.java<\/u><\/strong><\/p>\n<pre><code class=\"language-java\" data-line=\"\">import designpatterns.Singleton;\n\npublic class Main {\n    public static void main(String[] args) {\n        Singleton singleton = Singleton.getInstance();\n        singleton.showMessage();\n    }\n}<\/code><\/pre>\n<p>Dieser Code gibt die Nachricht &#8222;You have implemented design pattern Singleton.&#8220; aus, da <em>showMessage<\/em>() auf der Instanz des Singleton aufgerufen wird.<\/p>\n<p>Wir haben Dateien mit dem oben erw\u00e4hnten Java-Singleton-Beispielcode vorbereitet, den Sie <strong>direkt in Java<\/strong> ausf\u00fchren k\u00f6nnen. <a href=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/07\/Singleton.zip\">Lade den Code hier herunter<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Siehe Singletons erstes Entwurfsmuster aus der Kategorie Kreationsmuster.<\/p>\n","protected":false},"author":14,"featured_media":3584,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[62],"tags":[],"class_list":["post-3582","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/3582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/comments?post=3582"}],"version-history":[{"count":1,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/3582\/revisions"}],"predecessor-version":[{"id":3912,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/3582\/revisions\/3912"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media\/3584"}],"wp:attachment":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media?parent=3582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/categories?post=3582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/tags?post=3582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}