Definir uma interface para criar um objeto, mas deixar as s...
Qual opção abaixo corresponde à descrição anterior?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a B - Intenção do padrão de projeto factory method.
Vamos entender por que essa é a alternativa correta e analisar as demais opções.
Intenção do padrão de projeto Factory Method: O enunciado descreve a necessidade de definir uma interface para criar um objeto, mas deixar as subclasses decidirem qual classe instanciar. Isso é exatamente o que o padrão de projeto Factory Method faz. Ele permite que a instanciação de objetos seja delegada para subclasses, de forma que a classe base define o método de criação, mas é a subclasse que decide qual objeto concreto será criado. Esse padrão é útil quando uma classe não pode antecipar a classe de objetos que deve criar.
Alternativa A - Intenção do padrão de projeto Builder: O padrão Builder é utilizado para construir objetos complexos passo a passo. Ele separa a construção de um objeto da sua representação, permitindo que o mesmo processo de construção possa criar diferentes representações. Portanto, não se trata de delegar a escolha da classe concreta para subclasses, mas sim de estruturar a construção de um objeto complexo.
Alternativa C - Intenção do padrão de projeto Abstract Factory: O padrão Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Ele é mais abrangente que o Factory Method, pois permite a criação de múltiplos tipos de objetos. No entanto, a questão específica trata apenas da decisão de qual classe instanciar, que é uma característica do Factory Method.
Alternativa D - Intenção do padrão de projeto Strategy: O padrão Strategy define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. O Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam. Portanto, este padrão não tem relação direta com a criação de objetos e a delegação da decisão de qual classe instanciar para subclasses.
Alternativa E - Intenção do padrão de projeto Composite: O padrão Composite compõe objetos em estruturas de árvore para representar hierarquias parte/todo. Ele permite que os clientes tratem objetos individuais e composições de objetos de maneira uniforme. Este padrão também não se relaciona com a criação de objetos e a delegação da decisão para subclasses.
Em resumo, a questão aborda a necessidade de um padrão de projeto que permita delegar a decisão de qual classe instanciar para as subclasses, o que é exatamente o que o Factory Method faz. Por isso, a alternativa B está correta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Factory Method:
Você define uma interface como por exemplo
ArquivoCompactado
Esse arquivo compactado tem as operações de
extrair( )
listar( )
Mas pode ser que se trata de um arquivo zip, ou rar, ou tar, ou tar.gz...
Então você faz algo como
ArquivoCompactado meuArquivo = Factory.createArquivo( "umarquivo.rar" );
Builder:
O padrão builder é responsável pela criação de um objeto complexo, de acordo com a necessidade da aplicação.
Por exemplo, uma aplicação tem que gerar dois formularios diferentes, de acordo com o perfil do usuário cadastrado.
Se o usuário for particular, deve mostrar cpf, estado civil, filhos, salário, etc... Se for empresa deve mostrar cnpj, razão social, nome fantasia, etc...
O padrão builder vai abstrair a construção do objeto Formulario, por exemplo.
Abstract Factory:
Constrói uma familia de objetos sem especificar suas classes concretas.
Por exemplo, interfaces gráficas.
Você pode programar Janelas, Botões, Widgets, como classes abstratas e escolher que o Abstract Factory devire isso para classes concretas de um tema Dark, ou tema Mac, ou o tema Rebeldes... Etc.
Gabarito: B
Factory Method
======= RESUMO =====
COMPORTAMENTAIS
TSIO Chain State Visita e Interpreta Comando Med Mem
* Strategy: define uma família de algoritmos, encapsula cada um, e faz deles intercambiáveis.
* Chain of Responsibility: encadeia os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate.
* Iterator: acessar sequencialmente os elementos de um objeto.
* State: permite que um objeto mude o seu comportamento quando o seu estado interno mudar.
* Command: encapsula uma requisição como um objeto, deixando-o parametrizar clientes com diferentes requisições.
* Observer: quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente.
* Visitor: representa uma operação a ser executada sobre os elementos da estrutura de um objeto.
* Memento: captura e externaliza o estado interno de um objeto, de forma que ele possa ser recuperado depois.
* Mediator: encapsula a forma como um conjunto de objetos interage.
* Template Method: esqueleto de um algoritmo em uma operação, deferindo alguns passos para as subclasses.
* Interpreter: dada uma linguagem, define uma representação para sua gramática juntamente com um interpretador para as sentenças dessa linguagem.
== CRIACIONAIS ==
Prototype FAB Singleton
* Abstract Factory: interface para criar famílias de objetos relacionados.
* Builder: criação de objeto complexo com representações diferentes, construindo partes de objetos passo a passo.
* Factory Method: define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.
* Prototype: cria objetos usando uma instância prototípica (clone).
* Singleton: garante que uma classe possua apenas uma única instância e provê um ponto de acesso global a ela.
== ESTRUTURAIS ==
AFF Puta e Bridge Decora Composto
* Adapter: converte a interface de uma classe em outra .
* Bridge: desacopla uma interface de sua implementação.
* Composite: compõe zero ou mais objetos similares de forma que eles possam ser manipulados como um só (montagem de árvore).
* Decorator: anexa responsabilidades adicionais a um objeto dinamicamente.
* Proxy: substituto ou ponto de acesso através do qual um objeto possa controlar o acesso a outro.
* Façade: interface unificada para um conjunto de interfaces de um subsistema.
* Flyweigth: usa compartilhamento para suportar grandes quantidades de objetos, tornando o objeto mais leve que o original.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo