{"id":1020,"date":"2011-07-07T12:16:02","date_gmt":"2011-07-07T10:16:02","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/2011\/07\/enum-fr-singleton-nutzen\/"},"modified":"2011-07-07T12:16:02","modified_gmt":"2011-07-07T10:16:02","slug":"enum-fr-singleton-nutzen","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2011\/07\/enum-fr-singleton-nutzen\/","title":{"rendered":"enum f&uuml;r Singleton nutzen"},"content":{"rendered":"<p>Ein Singleton ist ein Objekt, was es in der Applikation nur einmal gibt.<a href=\"#_ftn1_5290\" name=\"_ftnref1_5290\">[1]<\/a> Javas enum ist daf\u00fcr perfekt geeignet, denn die Aufz\u00e4hlungsobjekte gibt es in der Tat nur einmal und die Bibliothek implementiert einige Tricks, um das Objekt auch m\u00f6glichst nur einmal zu erzeugen, etwa dann wenn die Aufz\u00e4hlung serialisiert \u00fcber die Leitung geht.<\/p>\n<p>Ein Beispiel dazu. Ein enum MainFrame soll genau eine Konstante INSTANCE deklarieren. Da enum-Typen Attribute deklarieren k\u00f6nnen, soll unser MainFrame eine Objektvariable JFrame bekommen. Das bedeutet dann, dass mit dem Exemplar INSTANCE ein Swing-Fenster assoziiert ist. Das es nur ein Aufz\u00e4hlungselement in der enum gibt, kann auch nur ein JFrame-Exemplar gebildet werden:<\/p>\n<p>public enum MainFrame<\/p>\n<p>{<\/p>\n<p><b><\/b><b> INSTANCE;<\/b><\/p>\n<p> private JFrame f = new JFrame();<\/p>\n<p> public JFrame getFrame()<\/p>\n<p> {<\/p>\n<p>&#160; return f;<\/p>\n<p> }<\/p>\n<p>}<\/p>\n<p>Damit ist INSTANCE ein Exemplar vom Typ MainFrame und hat ein privates Attribut und eine \u00f6ffentliche Zugriffsmethode. Da es nur eine Konstante gibt, gibt es auch nur ein Fenster. Eine Anwendung sieht etwa so aus:<\/p>\n<p>com\/tutego\/insel\/enumeration\/MainFrameDemo.java, main()<\/p>\n<p>MainFrame.INSTANCE.getFrame().setTitle( &quot;Singleton&quot; );<\/p>\n<p>MainFrame.INSTANCE.getFrame().setBounds( 100, 100, 300, 400 );<\/p>\n<p>MainFrame.INSTANCE.getFrame().setVisible( true );<\/p>\n<p>Aus jedem Teil der Anwendung ist MainFrame.INSTANCE zug\u00e4nglich und repr\u00e4sentiert dieses eine Exemplar. Auch kann dieses Exemplar \u00fcbergeben werden, weil es ein Objekt ist, wie jedes andere auch.<\/p>\n<hr align=\"left\" size=\"1\" width=\"33%\" \/>\n<p><a href=\"#_ftnref1_5290\" name=\"_ftn1_5290\">[1]<\/a> Pro Klassenlader, um das etwas genauer auszudr\u00fccken.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Singleton ist ein Objekt, was es in der Applikation nur einmal gibt.[1] Javas enum ist daf\u00fcr perfekt geeignet, denn die Aufz\u00e4hlungsobjekte gibt es in der Tat nur einmal und die Bibliothek implementiert einige Tricks, um das Objekt auch m\u00f6glichst nur einmal zu erzeugen, etwa dann wenn die Aufz\u00e4hlung serialisiert \u00fcber die Leitung geht. Ein [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-1020","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1020"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1020\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}