<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Singleton X Metodos Estátiscos"]]></title>
		<link>http://www.guj.com.br/posts/list/5.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Singleton X Metodos Estátiscos"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ Boa Tarde,<br /> <br /> Então... ainda não consegui ver "aquela vantagem" em criar um singleton ao invés de usar metodos estáticos, o que na minha opinião seria muito mais prático do que um singleton.....<br /> <br /> Vejo vantagem em criar um singleton qdo eu precisasse herdar funcionalidades de alguma classe.... Pois colocando todos os metodos estáticos não tenho como tirar proveito de uma herança....<br /> <br /> Dizem que singleton é util tb para poder inicializar os objetos da classe de uma forma organizada em que seja importante a ordem com que os objetos sejam instanciados, mas isso tb é possivel utilizando um "bloco estático"...<br /> <br /> <br /> Um facade por exemplo.... é um singleton??? ou é mais prático fazer vários metodos estáticos???<br /> <br /> <br /> valeu]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206196.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206196.java</link>
				<pubDate><![CDATA[Sun, 6 Aug 2006 15:32:18]]> GMT</pubDate>
				<author><![CDATA[ ssousuke]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ Estado mantido de forma estatica numa aplicacao eh tao venenoso quanto variaveis globais. Nao importa como esse estado eh acessado. Seja via singletons ou metodos estaticos, vai continuar sendo venenoso.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206199.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206199.java</link>
				<pubDate><![CDATA[Sun, 6 Aug 2006 16:31:32]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Re:Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ Então.... essa é uma regra da OO.... e vc está certo!!!! mas esse não é exatamente o foco da pergunta (qdo usar variaveis/metodos estaticas e qdo não usar...)<br /> <br /> A pergunta na verdade é: qual a vantagem em criar um singleton ao invés de todos os métodos da classe estáticas??<br /> <br /> até +<br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206202.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206202.java</link>
				<pubDate><![CDATA[Sun, 6 Aug 2006 17:03:44]]> GMT</pubDate>
				<author><![CDATA[ ssousuke]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ poder usar herança e polimorfismo ?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206210.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206210.java</link>
				<pubDate><![CDATA[Sun, 6 Aug 2006 18:27:48]]> GMT</pubDate>
				<author><![CDATA[ Rubem Azenha]]></author>
			</item>
			<item>
				<title>Re:Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ bom.... Para usar polimorfismo como fariamos se o singleton diz que seu construtor deve ser private? usariamos então construtor protected certo?!?<br /> <br /> imagino que o codigo da super classe ficaria assim:<br /> <br /> <br /> [code]<br /> public class Singleton {<br /> <br />     private static Singleton singleton;<br />     <br />     protected Singleton() {<br />     }<br />     <br />     public synchronized static Singleton getInstance() {<br /> 	<br /> 	if (singleton == null) {<br /> 	    <br /> 	    int tipoDoSingletonParaInstanciar = leUmArquivoTexto();<br /> 	    <br /> 	    if (tipoDoSingletonParaInstanciar == 1) {<br /> 		singleton = new SingletonSubclasse1();<br /> 	    } else if(tipoDoSingletonParaInstanciar == 2) {<br /> 		singleton = new SingletonSubclasse2();<br /> 	    } else {<br /> 		singleton = new Singleton();<br /> 	    }<br /> 	}<br /> <br /> 	return singleton;<br />     }<br />     <br />     public void metodoQuePodeSerSobrescrito() {<br /> 	System.err.println("Singleton.metodoQuePodeSerSobrescrito()");<br />     }<br /> }<br /> [/code]<br /> <br /> <br /> e da subclasse<br /> <br /> [quote]<br /> public class SingletonSubclasse1 extends Singleton {<br />     <br />     protected SingletonSubclasse1() {<br />     }<br /> <br />     @Override<br />     public void metodoQuePodeSerSobrescrito() {<br /> 	System.err.println("SingletonSubclasse1.metodoQuePodeSerS()");<br />     }<br /> }<br /> [/quote]<br /> <br /> <br /> é assim que vc ve o polimorfismo aplicado ao Singleton, ou a implementação não é bem essa.... concordo que já  é uma grande vantagem....<br /> <br /> Bom... já estou convencido que o Singleton é "um cara legal"....<br /> <br /> mas será que ele tem mais alguma vantagem??? <br /> <br /> valeu pessoal<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206215.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206215.java</link>
				<pubDate><![CDATA[Sun, 6 Aug 2006 19:21:07]]> GMT</pubDate>
				<author><![CDATA[ ssousuke]]></author>
			</item>
			<item>
				<title>Re:Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ Mas se você herdar a classe Singleton, ela vai deixar de ser singleton, pois você permitirá que qualquer subclasse crie uma instância da classe pai.  (li isso no head first design patterns). <br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206222.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206222.java</link>
				<pubDate><![CDATA[Sun, 6 Aug 2006 20:20:38]]> GMT</pubDate>
				<author><![CDATA[ alexpfb]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ Mais importante, pra que vc vai precisar de uma subclasse de um objeto que so pode existir uma vez?<br /> <br /> Alias, singletons desse tipo so existem uma vez por classloader -- o que eh [b]bem[/b] inutil, se for parar pra pensar.<br /> <br /> Resumindo, nao use singletons - use injecao de dependencias pra configuracao, ou outros mecanismos que nao dependam de estado estatico. <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206234.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206234.java</link>
				<pubDate><![CDATA[Sun, 6 Aug 2006 22:47:02]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ [quote=cv]Estado mantido de forma estatica numa aplicacao eh tao venenoso quanto variaveis globais. Nao importa como esse estado eh acessado. Seja via singletons ou metodos estaticos, vai continuar sendo venenoso.[/quote]<br /> <br /> o CV tem MAIS do que razao. normalmente usamos singletons so para ter uma maneira de fazer lookup.<br /> <br /> rarissimamente (posso ate arriscar um NUNCA) temos motivo para dizer que queremos apenas um objeto do tipo X na memoria.<br /> <br /> em vez de metodos estaticos ou singletons, eu dou preferencia para injecao de dependecias de objetos estupidos (isto eh, objetos que tem um monte de metodozinhos simples, sem nenhum estado, diga-se atributos). ou entao voce cria apenas um no seu interceptor/filter/aspect e injeta sempre o mesmo. dando uma escopo "applications" pro objeto (aha! variavel global)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206249.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206249.java</link>
				<pubDate><![CDATA[Mon, 7 Aug 2006 01:14:01]]> GMT</pubDate>
				<author><![CDATA[ Paulo Silveira]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ [quote=Paulo Silveira]Normalmente usamos singletons so para ter uma maneira de fazer lookup.[/quote]<br /> <br /> E isso por si so eh estado mantido de forma estatica, ja que a instancia do singleton eh mantida dessa forma <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0"><br /> <br /> Da pra entrar em todo tipo de discussao teorica sobre isso, mas se vc quiser resumir bem:<br /> <br /> - Variaveis estaticas, so tipos primitivos ou imutaveis, e devem ser final<br /> - Singletons sao indicio de que vc precisa pensar melhor sua arquitetura<br /> - Metodos estaticos sao indicio de que seus objetos tao ficando "burros"]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206250.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206250.java</link>
				<pubDate><![CDATA[Mon, 7 Aug 2006 01:44:00]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ [quote=cv]<br /> - Metodos estaticos sao indicio de que seus objetos tao ficando "burros"<br /> [/quote]<br /> e como seria um método não burro para tirar a raiz quadrada numa classe de matemática ???<br /> vc faria um singleton e um método não estático ???]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206689.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206689.java</link>
				<pubDate><![CDATA[Mon, 7 Aug 2006 17:52:18]]> GMT</pubDate>
				<author><![CDATA[ martins]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ Martins, o que seria uma 'classe de matematica'? Pra mim, sqrt() eh um metodo que deveria existir em qualquer numero. Exemplo:<br /> <br /> [code] &gt;&gt; 9.sqrt()<br /> 3<br /> &gt;&gt;[/code]<br /> <br /> :)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206806.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206806.java</link>
				<pubDate><![CDATA[Tue, 8 Aug 2006 04:32:41]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ [quote=cv]Martins, o que seria uma 'classe de matematica'? Pra mim, sqrt() eh um metodo que deveria existir em qualquer numero. Exemplo:<br /> <br /> [code] &gt;&gt; 9.sqrt()<br /> 3<br /> &gt;&gt;[/code]<br /> <br /> :)[/quote]<br /> Mas aí você estaria 'inchando'  demais a classe Número<br /> <br /> Eu costumo usar static somente para classes utilitárias de Texto, Número, Data, etc ... não vejo mal algum nisso. <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/206818.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/206818.java</link>
				<pubDate><![CDATA[Tue, 8 Aug 2006 08:34:45]]> GMT</pubDate>
				<author><![CDATA[ Fabricio Cozer Martins]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ [quote=Fabrício Cozer Martins][quote=cv]Martins, o que seria uma 'classe de matematica'? Pra mim, sqrt() eh um metodo que deveria existir em qualquer numero. Exemplo:<br /> <br /> [code] &gt;&gt; 9.sqrt()<br /> 3<br /> &gt;&gt;[/code]<br /> <br /> :)[/quote]<br /> Mas aí você estaria 'inchando'  demais a classe Número<br /> <br /> Eu costumo usar static somente para classes utilitárias de Texto, Número, Data, etc ... não vejo mal algum nisso. <br /> <br /> [/quote]<br /> <br /> A solução do cv é interessante, mas o fabrício tem completa razão.<br /> Sobre usar singleton ou não usar eu vou colocar como eu tomo essa decisão:<br /> <br /> - Se a classe tem estado interno, ou seja tem atributos que podem afetar outros métodos ou chamadas futuras ao próprio método então eu uso um sigleton, pois atributos estáticos não são uma boa técnica de programação;<br /> <br /> - Se o método não é afetado e também não afeta nenhum estado interno da classe ele deve ser estatico, não há razão pra usar sigleton neste caso.<br /> <br /> Espero ter ajudado.<br /> [ ] ' s  e  t +<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/207130.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/207130.java</link>
				<pubDate><![CDATA[Tue, 8 Aug 2006 15:47:42]]> GMT</pubDate>
				<author><![CDATA[ martins]]></author>
			</item>
			<item>
				<title>Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ [quote=cv][quote=Paulo Silveira]Normalmente usamos singletons so para ter uma maneira de fazer lookup.[/quote]<br /> <br /> E isso por si so eh estado mantido de forma estatica, ja que a instancia do singleton eh mantida dessa forma <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0"><br /> <br /> Da pra entrar em todo tipo de discussao teorica sobre isso, mas se vc quiser resumir bem:<br /> <br /> - Variaveis estaticas, so tipos primitivos ou imutaveis, e devem ser final<br /> - Singletons sao indicio de que vc precisa pensar melhor sua arquitetura<br /> - Metodos estaticos sao indicio de que seus objetos tao ficando "burros"[/quote]<br /> <br /> Inclui na lista:<br /> <br /> - ThreadLocal eh tao venenoso quanto. Eh o mesmo problema de lookup. E hoje em dia usado em MILHARES de lugares famosinhos por ai...<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/207341.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/207341.java</link>
				<pubDate><![CDATA[Wed, 9 Aug 2006 09:01:04]]> GMT</pubDate>
				<author><![CDATA[ Guilherme Silveira]]></author>
			</item>
			<item>
				<title>Re:Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ [code]Sobre usar singleton ou não usar eu vou colocar como eu tomo essa decisão: <br /> <br /> - Se a classe tem estado interno, ou seja tem atributos que podem afetar outros métodos ou chamadas futuras ao próprio método então eu uso um sigleton, pois atributos estáticos não são uma boa técnica de programação; <br /> <br /> - Se o método não é afetado e também não afeta nenhum estado interno da classe ele deve ser estatico, não há razão pra usar sigleton neste caso. <br /> <br /> Espero ter ajudado. [/code]<br /> <br /> Martins,<br /> <br /> Sobre isto que voce comentou é possivel voce nos dar um exemplo ?<br /> <br /> Abraços<br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/236944.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/236944.java</link>
				<pubDate><![CDATA[Fri, 3 Nov 2006 14:06:35]]> GMT</pubDate>
				<author><![CDATA[ gilsonclick@yahoo.com.br]]></author>
			</item>
			<item>
				<title>Re:Singleton X Metodos Estátiscos</title>
				<description><![CDATA[ Olá<br /> <br /> Gilson<br /> <br /> Você, como todos que ainda não fizeram, deve ler o Effective Java do Joshua Bloch ou J2EE Design and Development do Rod Johnson. Principalmente o Effective Java pois nenhum programador Java pode ser classificado como médio sem o ter lido.<br /> <br /> []s<br /> Luca]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/38669/236960.java</guid>
				<link>http://www.guj.com.br/posts/preList/38669/236960.java</link>
				<pubDate><![CDATA[Fri, 3 Nov 2006 14:40:33]]> GMT</pubDate>
				<author><![CDATA[ Luca]]></author>
			</item>
	</channel>
</rss>