Skip to content

Commit 9b7be10

Browse files
committed
translation of the Singleton pattern to Portuguese
1 parent 8a2c779 commit 9b7be10

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
---
2+
title: "Singleton Pattern in Java: Implementing Global Access Points in Java Applications"
3+
shortTitle: Singleton
4+
description: "Explore the Singleton Pattern in Java with our comprehensive guide. Learn how to implement efficient object management for your Java applications, ensuring optimal use of resources and easy access with examples and detailed explanations."
5+
category: Creational
6+
language: pt
7+
tag:
8+
- Gang of Four
9+
- Instantiation
10+
- Lazy initialization
11+
- Resource management
12+
---
13+
14+
## Também conhecido como
15+
16+
* Single Instance
17+
18+
## Propósito
19+
20+
Assegurar que a classe Java possua somente uma instância e forneça um ponto global de acesso a essa instância Singleton.
21+
22+
## Explicação
23+
24+
Exemplo do Mundo Real
25+
26+
> Uma analogia do mundo real para o padrão Singleton é um governo emitindo um passaporte. Em um país, cada cidadão pode receber apenas um passaporte válido por vez. O escritório de passaportes garante que nenhum passaporte duplicado seja emitido para a mesma pessoa. Sempre que um cidadão precisa viajar, ele deve usar este passaporte único, que serve como o identificador único e globalmente reconhecido para suas credenciais de viagem. Este acesso controlado e gerenciamento de instância exclusivo espelham como o padrão Singleton garante o gerenciamento eficiente de objetos em aplicativos Java.
27+
28+
Em outras palavras
29+
30+
> Assegura que somente um objeto de classe em particular seja criado.
31+
32+
De acordo com a Wikipédia
33+
34+
> Na engenharia de software, o padrão Singleton é um padrão de design de software que restringe a instanciação de uma classe a um objeto. Isso é útil quando exatamente um objeto é necessário para coordenar ações no sistema.
35+
36+
## Exemplo Programático
37+
38+
Joshua Bloch, Effective Java 2nd Edition pg.18
39+
40+
> Um tipo Enum de elemento único é a melhor maneira de implementar um Singleton
41+
42+
```java
43+
public enum EnumIvoryTower {
44+
INSTANCE
45+
}
46+
```
47+
48+
Então para usar:
49+
50+
```java
51+
var enumIvoryTower1 = EnumIvoryTower.INSTANCE;
52+
var enumIvoryTower2 = EnumIvoryTower.INSTANCE;
53+
LOGGER.info("enumIvoryTower1={}", enumIvoryTower1);
54+
LOGGER.info("enumIvoryTower2={}", enumIvoryTower2);
55+
```
56+
57+
A saída do console
58+
59+
```
60+
enumIvoryTower1=com.iluwatar.singleton.EnumIvoryTower@1221555852
61+
enumIvoryTower2=com.iluwatar.singleton.EnumIvoryTower@1221555852
62+
```
63+
64+
## Quando usar
65+
66+
Use o padrão Singleton quando
67+
68+
* Deve haver exatamente uma instância de uma classe, e ela deve ser acessível aos clientes a partir de um ponto de acesso bem conhecido
69+
* Quando a única instância deve ser extensível por herança, e os clientes devem ser capazes de usar uma instância estendida sem modificar seu código
70+
71+
## Aplicações do mundo real
72+
73+
* A classe de Log
74+
* Classes de configuração em muitos aplicativos
75+
* Pools de conexão
76+
* Gerenciador de arquivos
77+
* [java.lang.Runtime#getRuntime()](http://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#getRuntime%28%29)
78+
* [java.awt.Desktop#getDesktop()](http://docs.oracle.com/javase/8/docs/api/java/awt/Desktop.html#getDesktop--)
79+
* [java.lang.System#getSecurityManager()](http://docs.oracle.com/javase/8/docs/api/java/lang/System.html#getSecurityManager--)
80+
81+
## Benefícios e desafios do padrão Singleton
82+
83+
Benefícios:
84+
85+
* Acesso controlado à instância única.
86+
* Poluição reduzida do namespace.
87+
* Permite refinamento de operações e representação.
88+
* Permite um número variável de instâncias (se desejado mais de uma).
89+
* Mais flexível do que operações de classe.
90+
91+
Desafios:
92+
93+
* Difícil de testar devido ao estado global.
94+
* Gerenciamento de ciclo de vida potencialmente mais complexo.
95+
* Pode introduzir gargalos se usado em um contexto concorrente sem sincronização cuidadosa.
96+
97+
## Outros Padrōes de Projeto Relacionados
98+
99+
* [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): Geralmente usado para garantir que uma classe tenha apenas uma instância.
100+
* [Factory Method](https://java-design-patterns.com/patterns/factory-method/): O padrão Singleton pode ser implementado usando o padrāo Factory para encapsular a lógica de criação.
101+
* [Prototype](https://java-design-patterns.com/patterns/prototype/): Evita a necessidade de criar instâncias, pode ser usado em conjunto com o Singleton para gerenciar instâncias únicas.
102+
103+
## Referências e Créditos
104+
105+
* [Design Patterns: Elements of Reusable Object-Oriented Software](https://amzn.to/3w0pvKI)
106+
* [Effective Java](https://amzn.to/4cGk2Jz)
107+
* [Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software](https://amzn.to/49NGldq)
108+
* [Java Design Patterns: A Hands-On Experience with Real-World Examples](https://amzn.to/3yhh525)
109+
* [Refactoring to Patterns](https://amzn.to/3VOO4F5)

0 commit comments

Comments
 (0)