Neste artigo, vamos explorar o conceito de Enumerados, Fábrica e Solitão em Java, apresentando exemplos práticos de como implementá-los.
Enum
Enumerados em Java são tipos de dados que consistem em um conjunto fixo de valores pré-definidos. Eles fornecem uma maneira conveniente de representar um conjunto limitado de opções. Vejamos um exemplo de como declarar e usar enumerados em Java:
public enum DiaDaSemana {
SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO, DOMINGO;
}
public class Main {
public static void main(String[] args) {
DiaDaSemana dia = DiaDaSemana.SEGUNDA;
System.out.println("Hoje é " + dia);
}
}
Neste exemplo, declaramos um enumerado DiaDaSemana que representa os dias da semana. Em seguida, criamos uma variável dia do tipo DiaDaSemana e atribuímos o valor SEGUNDA. Por fim, imprimimos "Hoje é SEGUNDA" na saída.
Fábrica
Uma Fábrica em Java é um padrão de projeto que encapsula a criação de objetos. Ela fornece um método centralizado para criar instâncias de uma classe, permitindo maior flexibilidade e controle sobre o processo de criação. Vejamos um exemplo de como implementar uma fábrica em Java:
public interface Forma {
void desenhar();
}
public class Circulo implements Forma {
@Override
public void desenhar() {
System.out.println("Desenhando um círculo.");
}
}
public class Quadrado implements Forma {
@Override
public void desenhar() {
System.out.println("Desenhando um quadrado.");
}
}
public class FabricaFormas {
public static Forma criarForma(String tipo) {
if (tipo.equalsIgnoreCase("circulo")) {
return new Circulo();
} else if (tipo.equalsIgnoreCase("quadrado")) {
return new Quadrado();
} else {
throw new IllegalArgumentException("Tipo de forma inválido.");
}
}
}
public class Main {
public static void main(String[] args) {
Forma forma1 = FabricaFormas.criarForma("circulo");
Forma forma2 = FabricaFormas.criarForma("quadrado");
forma1.desenhar();
forma2.desenhar();
}
}
Neste exemplo, temos uma interface Forma que define o método desenhar(). Em seguida, implementamos as classes Circulo e Quadrado, que implementam a interface Forma e definem sua própria implementação do método desenhar(). A classe FabricaFormas é responsável por criar instâncias das formas com base em um tipo fornecido. Por fim, no método main(), utilizamos a fábrica para criar uma instância de um círculo e uma instância de um quadrado, e chamamos o método desenhar() em cada uma delas.
Solitão
O Solitão em Java é um padrão de projeto usado quando queremos restringir a criação de instâncias de uma classe a apenas uma única instância. Isso pode ser útil em cenários em que precisamos controlar o acesso a recursos compartilhados ou quando desejamos garantir que apenas uma instância de uma classe seja criada. Vejamos um exemplo de como implementar o Solitão em Java:
public class Configuracao {
private static Configuracao instancia;
private String nome;
private Configuracao() {
this.nome = "Configuração padrão";
}
public static Configuracao getInstance() {
if (instancia == null) {
instancia = new Configuracao();
}
return instancia;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
public class Main {
public static void main(String[] args) {
Configuracao config = Configuracao.getInstance();
System.out.println("Configuração: " + config.getNome());
Configuracao config2 = Configuracao.getInstance();
config2.setNome("Nova configuração");
System.out.println("Configuração: " + config.getNome());
System.out.println("Configuração 2: " + config2.getNome());
}
}
Neste exemplo, a classe Configuracao implementa o padrão Solitão. A instância única da classe é armazenada em uma variável estática instancia e é acessada através do método estático getInstance(). A classe Main demonstra como obter a instância única da classe e como alterar seu estado.
Espero que este artigo tenha fornecido uma visão geral dos conceitos de Enumerados, Fábrica e Solitão em Java, juntamente com exemplos práticos de implementação. Agora você está pronto para aplicar esses padrões em suas próprias aplicações Java!
Linkedin: https://www.linkedin.com/in/antonio-rodrigo-wanderley-serra/
GitHub: https://github.com/antoniorws
Top comments (0)