Padrão de projeto
Implementar um Singleton não é tão fácil como parece. Ao implementar um Singleton é necessário cuidar de não permitir formas de duplicar o objeto que existe nem permitir criar outros.Como vimos um Singleton é um objeto global acessível em qualquer ponto da aplicação.Isso significa que ele pode ser utilizado em simultâneo em várias threads.
Outro cuidado é com a serialização. Normalmente se o recurso se refere a algum componente físico da máquina ou do ambiente de execução não faz sentido serializar esse objeto. Se o recurso em causa diz respeito a um domínio de aplicação em que o recurso é único apenas do ponto de vista lógico da abstração, e não tem um vinculo ao mundo físico, então pode ser possível serializar o objeto. Contudo esta necessidade é, na prática, rara. O problema é que, quando é