1. Introdução ao modo
Definição de padrão
Certifique -se de que uma determinada classe tenha apenas uma instância e a instante e forneça essa instância a todo o sistema.
Cenário de uso de modo
Verifique se uma classe possui apenas um objeto, por exemplo, criar um objeto requer muitos recursos, como acessar recursos como IO e bancos de dados.
2. Diagrama de classe UML
Introdução ao personagem:
(1) Cliente: cliente de alto nível.
(2) Singleton: Singleton.
3. Implementação simples do padrão
classe pública Singleton {private Static Singleton Inance; private singleton () {} public static singleton getInstance () { / * * No início, quando vários threads entram, eles encontram bloqueios e um thread entra, que está vazio, novo objeto; Os threads subsequentes entram, não vazios, sem operação; Finalmente, retorne diretamente * o objeto não está vazio e vários threads entram na função, não vazios, nenhuma operação de travamento é executada e retorne diretamente */ if (Intance == null) {Synchronized (singleton.class) {if (Inance == null) {Intance = new Singleton (); }} retorna a intensa; }} classe singleton1 {// preguiçoso estático privado singleton1 Intance = new singleton1 (); // preguiçoso, ele carrega private singleton1 () {} public static singleton1 getInstance () {return intence; }} classe singleton2 {// Inanda de singleton estático privado de fome; private singleton2 () {} public static singleton2 getInstance () {// carrega if (intence == null) {Intance = new Singleton2 (); } retornar a intensa; }} classe singleton3 {// private estático singleton3 INDIÇÃO; private singleton3 () {} public sincronizado estático singleton3 getInstance () {// carrega quando usado, bloquear chamadas com vários threads têm uma ação de bloqueio se (Intance == null) {Intance = new Singleton3 (); } retornar a intensa; }} classe singleton4 {// private estático singleton4 INDIÇÃO; private singleton4 () {} public static singleton4 getInstance () {// colapso sincronizado (singleton4.class) {// a eficiência de travamento é semelhante a 3 if (intence == null) {Intance = new Singleton4 (); }} retorna a intensa; }}4. Prós e desvantagens
(1) vantagens:
R. Como o modo Singleton tem apenas uma instância na memória, o gasto de memória é reduzido, especialmente quando um objeto precisa ser criado e destruído com frequência, e o desempenho não pode ser otimizado durante a criação ou destruição, as vantagens do modo Singleton são muito óbvias.
B. Como o padrão de singleton gera apenas uma instância, a sobrecarga de desempenho do sistema é reduzida. Quando a geração de um objeto requer muitos recursos, como a leitura da configuração e a geração de outros objetos dependentes, ele pode ser resolvido gerando diretamente um objeto Singleton quando o aplicativo inicia e depois reside permanentemente na memória;
C. O modo Singleton pode evitar múltiplas ocupações de recursos, como uma ação de arquivo de gravação, porque apenas uma instância está na memória, evite operações de gravação simultâneas no mesmo arquivo de recursos.
D. O modo Singleton pode definir pontos de acesso global no sistema, otimizar e compartilhar o acesso aos recursos. Por exemplo, uma classe singleton pode ser projetada para ser responsável pelo mapeamento e processamento de todas as tabelas de dados.
(2) Desvantagens
R. O modo Singleton geralmente não possui interface e é difícil de expandir. Se você deseja expandir, basicamente não existe uma segunda maneira de implementá -lo, exceto modificar o código.