1. Descrição
1) Padrão de singleton: verifique se há apenas uma instância de uma classe, instancie -a e forneça esta instância ao sistema
2) Classificação do padrão de singleton: Padrão Singleton (Instalou um objeto para sua própria referência quando a classe é carregada), o padrão preguiçoso de singleton (o objeto será instanciado apenas quando o método que obtém a instância for chamado, como GetInstance) (Java Singleton O desempenho do modo é melhor do que o modo lento singleton, o modo preguiçoso singleton é geralmente usado em c ++)
3) Singleton Pattern Elements:
a) Método de construção privado
b) pontos de referência estática privada para sua própria instância
c) Método estático público com sua própria instância como o valor de retorno
2. Exemplo
Modo de fome Singleton:
A cópia do código é a seguinte:
pacote com.wish.modedesign;
classe pública Hunghsingleton {
Instância privada de fome estática por exemplo = New Hunghsingleton ();
Private Hunghsingleton () {
}
public static fomesingleton getInstance () {
instância de retorno;
}
}
Modo preguiçoso para singleton:
A cópia do código é a seguinte:
pacote com.wish.modedesign;
classe pública Singleton {
Private Singleton () {
}
Instância privada de estática estática;
public estático sincronizado singleton getInstance () {// preste atenção à segurança do thread quando multi-threading
if (instance == null) {
instância = new singleton ();
}
instância de retorno;
}
}
Driver da classe de teste.java
A cópia do código é a seguinte:
pacote com.wish.modedesign;
Driver de classe pública {
public static void main (string [] args) {
Singleton S1 = Singleton.getInstance ();
Singleton s2 = singleton.getInstance ();
System.out.println (S1 == S2);
}
}
3 vantagens e cenários aplicáveis
1) Vantagens do modo Singleton:
Existe apenas um objeto na memória, salvando o espaço da memória.
Evitar a criação e destruição frequente de objetos podem melhorar o desempenho.
Evite múltiplas ocupações de recursos compartilhados.
Pode ser acessado globalmente.
2) Cenários aplicáveis:
Objetos que precisam ser instanciados com frequência e depois destruídos.
Objetos que levam muito tempo ou muito recurso ao criar objetos, mas são frequentemente usados.
Objeto de ferramenta com estado.
Objetos que freqüentemente acessam bancos de dados ou arquivos.
4. Coisas a serem observadas ao usar
1) Ao usar, você não pode criar um singleton com modo de reflexão, caso contrário, um novo objeto será instanciado.
2) Preste atenção aos problemas de segurança dos threads ao usar o modo preguiçoso de singleton
3) O padrão faminto de singleton e os métodos de construção de padrões de singleton preguiçosos são privados e, portanto, não podem ser herdados.