Padrões de Projeto 1: Singleton

22 10 2007

Hoje as coisas estão um bocado apertadas, mas se esse post não sai hj, não sei quando sai. Foi uma semana de muito trabalho, muita burocacia (pra me inscrever no mestrado) e agora que consegui a inscrição, tenho logo de colocar esse post q já estava esperando por ser publicado a uma semana!

Singleton é um padrão de criação bem simples, e o problema endereçado é o de criar uma única instância de uma classe. Isso pode ser uma necessidade para garantir desempenho do sistema (não criando objetos demais que poderiam ser reaproveitados em outros momentos), uma exigência de usabilidade de tela ou mesmo uma regra de negócio.

Há uma discussão interessante em [1] e [2] sobre os problemas de singleton como um padrão de projeto. O fato ocorre pois (como você vai ver mais a frente) o singleton utiliza de recursos de implementação que não são considerados boas práticas de POO, além de também ser considerado prejudicial para a organização da arquitetura da aplicação se usado exageradamente.

Em C++:

class MyClass{
	private:
		MyClass() {}
 	public:
		static MyClass* getInstance()
       		{
			static MyClass *instance = 0;
			return instance ? instance : (instance = new MyClass());
		}
};

Em Java:

 public class MyClass{
	private MyClass instance = null;
 	private MyClass(){
	}

	public static MyClass getInstance(){
 		if (instance == null){
			instance = new MyClass();
		}
		return instance;
	}
}

[1] Perils of the Singleton – http://www.softwarereality.com/design/singleton.jsp

[2] The One: A Singleton Discussion – http://www.gamedev.net/reference/articles/article1825.asp

[3] Problems with design pattern “Singleton” – http://www.theserverside.com/blogs/thread.tss?thread_id=41546

[4]Singleton Pattern #3: Problems with Singleton, Thread-Safe Singleton Class – http://www.kamalmeet.com/wordpress/2007/02/15/singleton-pattern-3-problems-with-singleton-thread-safe-singleton-class/


Ações

Informações

Uma resposta

22 10 2007
Padrões de Projeto 0: Introdução « FreeBeing

[...] Singleton [...]

Deixe um comentário