Padrão Prototype
Gabarito: letra C. O método cp3rd retorna uma nova instância da mesma classe com estado idêntico ao objeto chamador, característica central do padrão Prototype (GoF). O Prototype permite criar novos objetos a partir de um protótipo existente, clonando-o. As demais alternativas não se encaixam: Builder constrói objetos complexos passo a passo; Singleton garante uma única instância; Factory Method e Abstract Factory delegam a criação a fábricas, não a um método no próprio objeto.
Padrão de Projeto | Característica Central | Aplicação no Cenário | Correta? |
|---|
Builder | Constrói objetos complexos passo a passo | Não há construção passo a passo; apenas clonagem | ❌ |
Singleton | Garante uma única instância da classe | cp3rd cria novas instâncias, oposto ao Singleton
| ❌ |
Prototype | Cria novos objetos clonando um protótipo existente | cp3rd retorna nova instância com estado idêntico (clone)
| ✅ |
Factory Method | Define interface para criação, delegando a subclasses | Criação não é feita por método do próprio objeto | ❌ |
Abstract Factory | Fornece interface para criar famílias de objetos | Não há criação via método do objeto existente | ❌ |
Alternativa A — ❌ Incorreta
O padrão Builder separa a construção de um objeto complexo de sua representação, permitindo diferentes construções. Não há construção passo a passo via método cp3rd; apenas uma clonagem.
Alternativa B — ❌ Incorreta
O Singleton garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso. O método cp3rd cria novas instâncias, o que é oposto ao Singleton.
Alternativa C — ✅ Correta ⟵ GABARITO
O Prototype especifica os tipos de objetos a serem criados usando uma instância prototípica e cria novos objetos pela cópia desse protótipo. Exatamente o que cp3rd faz: retorna uma nova instância com estado idêntico (clone).
Alternativa D — ❌ Incorreta
Factory Method define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar. A criação não é feita por um método do próprio objeto instanciado.
Alternativa E — ❌ Incorreta
Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Não há criação via método do objeto existente.