Logo

dev-resources.site

for different kinds of informations.

Enum Fábrica Solitão em Java

Published at
9/18/2023
Categories
java
enum
beginners
braziliandevs
Author
antoniorws
Categories
4 categories in total
java
open
enum
open
beginners
open
braziliandevs
open
Author
10 person written this
antoniorws
open
Enum Fábrica Solitão em Java

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);
    }
}

Enter fullscreen mode Exit fullscreen mode


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();
    }
}

Enter fullscreen mode Exit fullscreen mode


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());
    }
}
Enter fullscreen mode Exit fullscreen mode


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

enum Article's
30 articles in total
Favicon
Mastering ENUMs in Go
Favicon
The 3 kinds of Enum in Rails
Favicon
Enhancing Enum Constants in Laravel with Description and Label Attributes
Favicon
Should I stay or should I go? Enums in TypeScript - error case study
Favicon
Effective Enum
Favicon
Result in Rust: another way of error handling
Favicon
How to convert a TypeScript built-in enum to a GraphQL enum
Favicon
Leveraging Enums in Angular: Enhancing Code Clarity and Reliability
Favicon
Typescript enum vs. "as const"
Favicon
Enum Fábrica Solitão em Java
Favicon
Implementing Enums in Golang
Favicon
Elixirでリストの最初の要素を取得
Favicon
[JS TS] How to create an object with keys based on enum
Favicon
Enum ou Enumerations no PHP
Favicon
Replacing If-Else Statements with Enums in Java
Favicon
Dart enhanced enum with custom values
Favicon
Working with Enums in Rust
Favicon
Modelando algoritmos complexos com enum
Favicon
Managing Task Status Transitions in TypeScript with Enums and Object Mapping
Favicon
TypeScript Enum's vs Discriminated Unions
Favicon
Strategy Pattern no Spring Boot Usando Enum
Favicon
Problem in C Pointer
Favicon
Merge TypeScript Enums
Favicon
Agora sim, o grande ganho do enum no Dart 2.17
Favicon
How to proper use ambient enum from Definition file
Favicon
O Poder da Classe Enum com métodos abstratos
Favicon
Refactoring code with the Strate Pattern
Favicon
🔥Input Enums for a better Development Experience 🔥 😋✂️
Favicon
O pequeno grande ganho do enum no Dart 2.15
Favicon
Typescript enums drawbacks and solutions

Featured ones: