Sobes.tech
Middle

O que são padrões de projeto?

sobes.tech IA

Resposta da IA

Os padrões de projeto são soluções típicas, testadas repetidamente, para problemas comuns de design na programação orientada a objetos. Eles não são bibliotecas ou frameworks prontos a usar, mas conceitos ou "receitas" que podem ser adaptados a tarefas específicas.

Os padrões concentram-se nas relações entre classes e objetos. São divididos em três categorias principais:

  • Criacionais: Padrões para criar objetos.
    • Método de Fábrica (Factory Method)
    • Fábrica Abstrata (Abstract Factory)
    • Singleton
    • Builder
    • Prototype
  • Estruturais: Padrões para organizar classes e objetos em estruturas maiores.
    • Adaptador (Adapter)
    • Ponte (Bridge)
    • Composto (Composite)
    • Decorador (Decorator)
    • Fachada (Facade)
    • Flyweight
    • Proxy
  • Comportamentais: Padrões para algoritmos e formas de interação entre classes e objetos.
    • Cadeia de Responsabilidade (Chain of Responsibility)
    • Comando (Command)
    • Iterador (Iterator)
    • Mediador (Mediator)
    • Memento
    • Observador (Observer)
    • Estado (State)
    • Estratégia (Strategy)
    • Método Template (Template Method)
    • Visitante (Visitor)

O uso de padrões de projeto permite criar código mais flexível, escalável e de fácil manutenção, melhorando sua legibilidade e facilitando o trabalho em equipe.

Por exemplo, o padrão Singleton garante que uma classe tenha apenas uma instância e fornece um ponto de acesso global a ela.

// Exemplo de Singleton em Java
class Singleton {
    private static Singleton instance; // Única instância

    private Singleton() {
        // Construtor privado para evitar criação de novas instâncias
    }

    public static Singleton getInstance() {
        if (instance == null) { // Criação da instância na primeira chamada
            instance = new Singleton();
        }
        return instance; // Retorna a única instância
    }

    public void showMessage() {
        System.out.println("Olá do Singleton!");
    }
}