<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: B) Singleton</title>
	<atom:link href="http://www.java-blog-buch.de/b-singleton/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.java-blog-buch.de/b-singleton/</link>
	<description>Ein Buch über Java Programmierung als Blog</description>
	<lastBuildDate>Tue, 31 Jan 2012 16:30:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Von: Stefan Kiesel</title>
		<link>http://www.java-blog-buch.de/b-singleton/comment-page-1/#comment-4144</link>
		<dc:creator>Stefan Kiesel</dc:creator>
		<pubDate>Mon, 05 Oct 2009 10:04:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=2505#comment-4144</guid>
		<description>Hi Marty,

vielen Dank für das Feedback. 

Ich habe mal einige Kritikpunkte als zusätzlichen Teil in das Kapitel eingearbeitet.

Gruß
Stefan</description>
		<content:encoded><![CDATA[<p>Hi Marty,</p>
<p>vielen Dank für das Feedback. </p>
<p>Ich habe mal einige Kritikpunkte als zusätzlichen Teil in das Kapitel eingearbeitet.</p>
<p>Gruß<br />
Stefan</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Marty</title>
		<link>http://www.java-blog-buch.de/b-singleton/comment-page-1/#comment-4143</link>
		<dc:creator>Marty</dc:creator>
		<pubDate>Mon, 05 Oct 2009 09:35:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=2505#comment-4143</guid>
		<description>Danke fuer die Antwort.

Mir ist durchaus bekannt, dass es ein &quot;offizielles&quot; Pattern der GoF ist, was aber meine Kritik nicht schmaelert.

Natuerlich koennen Sie meine Kritikpunkte in den Thread einarbeiten.

Danke</description>
		<content:encoded><![CDATA[<p>Danke fuer die Antwort.</p>
<p>Mir ist durchaus bekannt, dass es ein &#8220;offizielles&#8221; Pattern der GoF ist, was aber meine Kritik nicht schmaelert.</p>
<p>Natuerlich koennen Sie meine Kritikpunkte in den Thread einarbeiten.</p>
<p>Danke</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Stefan Kiesel</title>
		<link>http://www.java-blog-buch.de/b-singleton/comment-page-1/#comment-4142</link>
		<dc:creator>Stefan Kiesel</dc:creator>
		<pubDate>Mon, 05 Oct 2009 08:42:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=2505#comment-4142</guid>
		<description>Hallo Marty,

danke für den umfangreichen und informativen Kommentar.

Ich versuche erst gar nicht, die einzelnen Punkte zu entkräften oder denen entgegenzuwirken. Einfach deshalb nicht, weil Sie in den meisten Fällen recht haben.

Ein Singleton macht schlichtweg in den wenigsten Situationen Sinn (auch wenn ich nicht so weit gehen möchte und behaupten,  dass ein Singleton wirklich &lt;strong&gt;nie&lt;/strong&gt; sinnvoll ist). Dennoch ist es ein relativ verbreitetes Pattern, welches auch im &lt;strong&gt; &lt;a href=&quot;http://www.amazon.de/gp/product/3827321999?ie=UTF8&amp;tag=jablbu-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=3827321999&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Buch&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.de/e/ir?t=jablbu-21&amp;l=as2&amp;o=3&amp;a=3827321999&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt; der &lt;a href=&quot;http://de.wikipedia.org/wiki/Viererbande_(Softwareentwicklung)&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;GoF&lt;/a&gt;&lt;/strong&gt; zu finden ist, weshalb es letztendlich auch den Weg in das Java Blog Buch gefunden hat.

Mit Ihrer Genehmigung würde ich Ihre Kritikpunkte gerne (leicht modifiziert) in das Kapitel einarbeiten.

Vielen Dank und Grüße
Stefan</description>
		<content:encoded><![CDATA[<p>Hallo Marty,</p>
<p>danke für den umfangreichen und informativen Kommentar.</p>
<p>Ich versuche erst gar nicht, die einzelnen Punkte zu entkräften oder denen entgegenzuwirken. Einfach deshalb nicht, weil Sie in den meisten Fällen recht haben.</p>
<p>Ein Singleton macht schlichtweg in den wenigsten Situationen Sinn (auch wenn ich nicht so weit gehen möchte und behaupten,  dass ein Singleton wirklich <strong>nie</strong> sinnvoll ist). Dennoch ist es ein relativ verbreitetes Pattern, welches auch im <strong> <a href="http://www.amazon.de/gp/product/3827321999?ie=UTF8&#038;tag=jablbu-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=3827321999" target="_blank" rel="nofollow">Buch</a><img src="http://www.assoc-amazon.de/e/ir?t=jablbu-21&#038;l=as2&#038;o=3&#038;a=3827321999" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> der <a href="http://de.wikipedia.org/wiki/Viererbande_(Softwareentwicklung)" target="_blank" rel="nofollow">GoF</a></strong> zu finden ist, weshalb es letztendlich auch den Weg in das Java Blog Buch gefunden hat.</p>
<p>Mit Ihrer Genehmigung würde ich Ihre Kritikpunkte gerne (leicht modifiziert) in das Kapitel einarbeiten.</p>
<p>Vielen Dank und Grüße<br />
Stefan</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Marty</title>
		<link>http://www.java-blog-buch.de/b-singleton/comment-page-1/#comment-4141</link>
		<dc:creator>Marty</dc:creator>
		<pubDate>Mon, 05 Oct 2009 08:01:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=2505#comment-4141</guid>
		<description>der kommentar muss leider sein ;-)

&gt;Aber irgendwie müssen Sie von überall (ohne, dass ein bestimmtes &gt;Objekt vorhanden ist) auf dieses Attribut zugreifen können. 
Nennt sich auch globale Variable und sind absolut zu vermeiden. Wenn eine Klasse auf etwas zugreifen muss, so soll diese als Abhaengigkeit mitgeteilt werden, nicht ueber irgendwelche magic access der Klasse selber. Das hat mehrere Probleme: 

im Grunde luegt das Programm bzw die API. Es werden explizit keine Abhaengigkeiten deklariert, aber aufgrund von globalen Zugriffen hat man auf einmal einen Objektgraphen mitzukompilieren. Es werden sozusagen Abhaengigkeiten verschleiert.

untestbar: man will in seinen Tests Objekte erzeugen, testen, wegschmeissen - weiterhin will man allgemein dass ein stueck code bei wiederholten aufruf, ohne informationsfluss von aussen, immer das selbe tut... durch singletons bzw globale zustaende ist dies nicht gesichert.

Test klappt, Test klappt nicht, Test klappt, Test klappt nicht... 
Man hat eine Testsuite die 1h laeuft. Der letzte Test schlaegt fehl. In Isolation geht er durch... viel Spass das zu debuggen.

Weiterhin hat man durch Singletons nicht nur eine globale Variable, da meist das Singleton selbst noch Referenzen haelt und diese wieder und diese wieder, was eben so theoretisch unendliche vielen globalen Zustaenden sich ausweitet.

&gt;Und wie &gt;stellen Sie sicher, dass nicht einfach ein neues Objekt der &gt;Klasse erzeugt &gt;wird?
In dem man einfach Objekterzeugung aus der Logik rausnimmt. Kein logikcode, keine datenklasse erzeugt irgendwelche Objekte, es wird alles per Konstruktor (bzw methoden) explizit reingegeben (stichwort Dependency Injection).
Es gibt 1 Stelle, und nur 1 Stelle an den Objekte erzeugt werdene und verdrahtet werden.

Das Singleton verletzt das SingleResponsiblity Prinzip, es ist sowohl fuer logik zustaendig, als auch sicherzustellen, dass es die Instanz nur einmal gibt. Nicht die Klasse hat das zu regeln, sondern die Applikation.

D.h. es ist nicht verwerflich von einer Klasse nur eine Instanz in seiner Applikation zu haben, es ist aber verwerflich wenn die Klasse diese Einzigartigkeit selbst erzwingt.


Summasumarum: Singletons sind nicht zu verwenden und eine Designschwaeche. In 9 von 10 Faellen wird es nicht aufgrund seiner Einzigartigkeit genommen (wofuer es bessere alternativen gibt), sondern eben genau wegen &quot;muss ueberall zugreifen koennen&quot; - der groesse Denk und designfehler.

unbedingt empfehlenswert: http://www.youtube.com/watch?v=-FRm3VPhseI</description>
		<content:encoded><![CDATA[<p>der kommentar muss leider sein <img src='http://www.java-blog-buch.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&gt;Aber irgendwie müssen Sie von überall (ohne, dass ein bestimmtes &gt;Objekt vorhanden ist) auf dieses Attribut zugreifen können.<br />
Nennt sich auch globale Variable und sind absolut zu vermeiden. Wenn eine Klasse auf etwas zugreifen muss, so soll diese als Abhaengigkeit mitgeteilt werden, nicht ueber irgendwelche magic access der Klasse selber. Das hat mehrere Probleme: </p>
<p>im Grunde luegt das Programm bzw die API. Es werden explizit keine Abhaengigkeiten deklariert, aber aufgrund von globalen Zugriffen hat man auf einmal einen Objektgraphen mitzukompilieren. Es werden sozusagen Abhaengigkeiten verschleiert.</p>
<p>untestbar: man will in seinen Tests Objekte erzeugen, testen, wegschmeissen &#8211; weiterhin will man allgemein dass ein stueck code bei wiederholten aufruf, ohne informationsfluss von aussen, immer das selbe tut&#8230; durch singletons bzw globale zustaende ist dies nicht gesichert.</p>
<p>Test klappt, Test klappt nicht, Test klappt, Test klappt nicht&#8230;<br />
Man hat eine Testsuite die 1h laeuft. Der letzte Test schlaegt fehl. In Isolation geht er durch&#8230; viel Spass das zu debuggen.</p>
<p>Weiterhin hat man durch Singletons nicht nur eine globale Variable, da meist das Singleton selbst noch Referenzen haelt und diese wieder und diese wieder, was eben so theoretisch unendliche vielen globalen Zustaenden sich ausweitet.</p>
<p>&gt;Und wie &gt;stellen Sie sicher, dass nicht einfach ein neues Objekt der &gt;Klasse erzeugt &gt;wird?<br />
In dem man einfach Objekterzeugung aus der Logik rausnimmt. Kein logikcode, keine datenklasse erzeugt irgendwelche Objekte, es wird alles per Konstruktor (bzw methoden) explizit reingegeben (stichwort Dependency Injection).<br />
Es gibt 1 Stelle, und nur 1 Stelle an den Objekte erzeugt werdene und verdrahtet werden.</p>
<p>Das Singleton verletzt das SingleResponsiblity Prinzip, es ist sowohl fuer logik zustaendig, als auch sicherzustellen, dass es die Instanz nur einmal gibt. Nicht die Klasse hat das zu regeln, sondern die Applikation.</p>
<p>D.h. es ist nicht verwerflich von einer Klasse nur eine Instanz in seiner Applikation zu haben, es ist aber verwerflich wenn die Klasse diese Einzigartigkeit selbst erzwingt.</p>
<p>Summasumarum: Singletons sind nicht zu verwenden und eine Designschwaeche. In 9 von 10 Faellen wird es nicht aufgrund seiner Einzigartigkeit genommen (wofuer es bessere alternativen gibt), sondern eben genau wegen &#8220;muss ueberall zugreifen koennen&#8221; &#8211; der groesse Denk und designfehler.</p>
<p>unbedingt empfehlenswert: <a href="http://www.youtube.com/watch?v=-FRm3VPhseI" rel="nofollow">http://www.youtube.com/watch?v=-FRm3VPhseI</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

