<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hostylez &#187; Dev</title>
	<atom:link href="http://blog.hostylez.com/category/dev/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.hostylez.com</link>
	<description>Reveal yer trve dark attitude :3</description>
	<lastBuildDate>Tue, 26 Jan 2010 19:07:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Une autre manière de faire un singleton en Java</title>
		<link>http://blog.hostylez.com/dev/2009/11/19/autre-maniere-singleton-java</link>
		<comments>http://blog.hostylez.com/dev/2009/11/19/autre-maniere-singleton-java#comments</comments>
		<pubDate>Thu, 19 Nov 2009 20:06:45 +0000</pubDate>
		<dc:creator>Rykian</dc:creator>
				<category><![CDATA[Dev]]></category>

		<guid isPermaLink="false">http://blog.hostylez.com/?p=130</guid>
		<description><![CDATA[Je sais, le singleton nuit gravement à la santé de votre code comme certains disent. Mais pour les besoins de ma boîte, je suis en train de développer une nouvelle version de l'API de connection à notre base de donnée préférée (XediX1) et pour des raisons de performance le singleton est préférable.
Habituellement tel qu'on nous [...]]]></description>
			<content:encoded><![CDATA[<p>Je sais, le singleton nuit gravement à la santé de votre code comme <a title="Fabien Potencier, Jouons avec PHP 5.3" href="http://www.slideshare.net/fabpot/playing-with-php-53">certains disent</a>. Mais pour les besoins de ma boîte, je suis en train de développer une nouvelle version de l'API de connection à notre base de donnée préférée (XediX<sup>1</sup>) et pour des raisons de performance le singleton est préférable.</p>
<p>Habituellement tel qu'on nous l'apprends, ça ressemble plus à ça :</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MySingleton <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> MySingleton instance<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> MySingleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> MySingleton getInstance<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>MySingleton.<span style="color: #006633;">instance</span> <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
			MySingleton.<span style="color: #006633;">instance</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Singleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">return</span> MySingleton.<span style="color: #006633;">instance</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>En Java il existe un autre moyen plus propre et plus adapté je trouve :</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MyNewSingleton <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> MyNewSingleton instance<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #009900;">&#123;</span>
		MyNewSingleton.<span style="color: #006633;">instance</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Singleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> MyNewSingleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> MyNewSingleton getInstance<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> MyNewSingleton.<span style="color: #006633;">instance</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Lors de l'appel d'une méthode de la classe MyNewSingleton, la machine virtuelle va d'abord s'occuper du code placé à l'intérieur de l'instruction <code>static {}</code> puis va executer le code de la méthode appelé. Ce n'est pas un énorme changement, mais ça évite une condition qui ne m'avait jamais branché (je n'aime malheureusement pas les conditions, dommage pour un développeur).</p>
<ol class="footnotes"><li id="footnote_0_130" class="footnote">Base de donnée XML native développée par le CEA, qui fera certainement l'objet d'un prochain article</li></ol>]]></content:encoded>
			<wfw:commentRss>http://blog.hostylez.com/dev/2009/11/19/autre-maniere-singleton-java/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
