Sobes.tech
Junior — Middle

Explique as diferenças entre os padrões Singleton e Prototype no contexto de escopo e uso de objetos.

sobes.tech IA

Resposta da IA

O padrão Singleton garante que exista apenas uma instância de uma classe na aplicação, acessível globalmente. O âmbito do objeto é global, e todos os clientes trabalham com o mesmo objeto. Isto é útil para gerir recursos comuns, como configurações ou pools de conexões.

O padrão Prototype envolve criar novos objetos clonando um protótipo existente. Cada chamada cria uma nova instância independente. O âmbito é local para cada objeto criado, permitindo ter múltiplos objetos semelhantes, mas independentes.

Exemplo em Java:

// Singleton
public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

// Prototype
public class Prototype implements Cloneable {
    private int value;
    public Prototype(int value) { this.value = value; }
    public Prototype clone() throws CloneNotSupportedException {
        return (Prototype) super.clone();
    }
}

Assim, Singleton é um objeto único em toda a aplicação, Prototype são múltiplos objetos criados a partir de um modelo.