Enum Fábrica Solitão em Java
Tags: java, enum, beginners, braziliandevs
Published: 2023-09-18 16:41:23


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