Com base nessa situação hipotética, julgue o item a seguir, ...
I implementar um padrão de criação que possibilite a separação entre a construção de um objeto complexo e sua representação de modo que esse processo de construção possa criar diferentes representações;
II implementar um padrão que evite vínculo permanente entre uma abstração e sua implementação;
III implementar um padrão que, sem violar o encapsulamento e a captura, externalize o estado interno de um objeto e permita que posteriormente ele seja restaurado a esse estado;
IV implementar um padrão que permita a variação do algoritmo independentemente dos clientes que o utilizam;
V implementar um padrão que forneça uma interface unificada para um conjunto de interfaces em um subsistema;
VI implementar um padrão que especifique os tipos de objetos a serem criados usando uma instância prototípica e crie novos objetos copiando este novo protótipo.
Atendendo corretamente o que se pede em IV, o padrão comportamental strategy define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa Correta: C - certo
A questão aborda o conhecimento sobre os padrões de projeto (Design Patterns), que são soluções generalistas para problemas comuns no desenvolvimento de software. Estes padrões ajudam a estruturar o sistema de maneira eficiente e manutenível. Para resolver a questão, é necessário compreender diferentes padrões e saber a que tipo de problema cada um se aplica.
No contexto do enunciado, o item IV pede um padrão que permita a variação do algoritmo independentemente dos clientes que o utilizam. Isso é exatamente o que o padrão de projeto Strategy faz. O padrão Strategy define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. Isso significa que o mesmo contexto pode utilizar diferentes estratégias sem precisar alterar as classes que usam esses algoritmos.
A corretude da afirmação está na habilidade do padrão Strategy de permitir a substituição de partes do algoritmo em tempo de execução, o que é uma maneira eficiente de variar o comportamento de um objeto sem alterar a sua estrutura ou os seus clientes. Essa técnica contribui para a flexibilidade e reutilização do código.
No Strategy, o contexto mantém uma referência a uma estratégia (um algoritmo encapsulado) e pode alterar essa estratégia conforme necessário. Os clientes do contexto não precisam saber qual estratégia está sendo usada, apenas que o comportamento esperado será realizado. Isso é alcançado através da composição, que é uma alternativa preferível à herança quando se quer mudar dinamicamente o comportamento de objetos.
Portanto, a alternativa C está correta porque o padrão Strategy é um padrão comportamental que se encaixa perfeitamente na descrição do item IV, oferecendo uma solução direta para a necessidade especificada.
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
2017
Padrões de projeto nomeiam, explicam e avaliam um aspecto de projeto importante e recorrente em sistemas orientados a objetos.
Avalie as características atribuídas a um padrão de projeto.
I- Usado quando uma classe é usuária de uma certa hierarquia/ família de algoritmos, como um algoritmo de busca ou ordenação.
II- Esse padrão define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis.
III- Como existem diversos algoritmos em uma mesma família, não é desejável que se codifique todos eles em uma mesma classe.
IV- Permite que um algoritmo varie, independentemente dos clientes que o utilizam.
V- Fornece uma maneira de configurar uma classe com um dentre muitos comportamentos.
VI- Pode ser usado para evitar a exposição das estruturas de dados específicas de um algoritmo, que se deseja ocultar.
Essas características são do padrão de projeto
CERTO
Quem varia é o algoritmo. Então nesse caso, Strategy. Caso fosse um algoritmo que passasse a decisão das reponsabilidades às subclasses seria Template Method.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo