Padrões de projeto são descrições de soluções prontas para ...

Próximas questões
Com base no mesmo assunto
Q2469947 Arquitetura de Software
Padrões de projeto são descrições de soluções prontas para problemas específicos e frequentes de software, podendo ser classificados de acordo com a natureza do problema que solucionam. A classificação e a finalidade do padrão de projeto Decorator são, respectivamente: 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a Alternativa B: estrutural, estender funcionalidades de forma dinâmica.

Os padrões de projeto (Design Patterns) são soluções reutilizáveis para problemas comuns encontrados no desenvolvimento de software. Eles são amplamente utilizados para melhorar a manutenção e a estrutura do código, facilitando a comunicação entre desenvolvedores.

O padrão Decorator pertence à categoria dos padrões estruturais, que se preocupam com a organização das classes e dos objetos para formar estruturas maiores e mais complexas.

O principal objetivo do padrão Decorator é permitir que funcionalidades adicionais sejam acrescentadas a um objeto de forma dinâmica, sem alterar sua estrutura original. Isso é feito através da composição de objetos, onde um objeto é "decorado" com novas funcionalidades por meio de outras classes que implementam a mesma interface.

Agora, vamos analisar as alternativas incorretas para entender melhor por que elas não se aplicam ao padrão Decorator:

Alternativa A: comportamental, definir uma dependência entre objetos.

Esta alternativa está incorreta porque o padrão Decorator não pertence à categoria dos padrões comportamentais, que focam em como os objetos interagem e colaboram entre si. Além disso, o Decorator não define dependências entre objetos, mas sim, adiciona funcionalidades de forma dinâmica a um objeto.

Alternativa C: estrutural, ocultar a complexidade de uma classe.

Embora o Decorator seja um padrão estrutural, seu propósito não é ocultar a complexidade de uma classe, mas sim, permitir a extensão de funcionalidades de um objeto de maneira dinâmica. A ocultação da complexidade de uma classe é mais característica de padrões como o Facade.

Alternativa D: comportamental, criar compatibilidade entre um sistema e outros frameworks.

Esta alternativa está incorreta porque o padrão Decorator não pertence à categoria dos padrões comportamentais e não tem como objetivo principal criar compatibilidade entre sistemas e frameworks. Esse tipo de compatibilidade é mais típico de padrões como o Adapter, que permite que interfaces incompatíveis se comuniquem.

Em resumo, o padrão Decorator é um padrão estrutural cujo principal objetivo é estender funcionalidades de forma dinâmica a objetos, sem modificar a estrutura original deles.

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

A alternativa correta é B) estrutural, estender funcionalidades de forma dinâmica.

O padrão de projeto Decorator (Decorador) é classificado como um padrão estrutural, e sua finalidade principal é permitir estender dinamicamente a funcionalidade de um objeto, adicionando novos comportamentos sem a necessidade de criar novas subclasses.

Explicação:

1. Classificação: Estrutural

Os padrões estruturais se preocupam com a composição de classes e objetos para formar estruturas maiores, facilitando o projeto de software ao obter novas funcionalidades de forma flexível.

2. Finalidade: Estender funcionalidades de forma dinâmica

O padrão Decorator permite adicionar responsabilidades a objetos individuais de forma dinâmica e transparente, ou seja, sem afetar outros objetos do mesmo tipo. Isso é feito envolvendo (decorando) o objeto original com um objeto decorador que adiciona a nova funcionalidade desejada.

As outras alternativas estão incorretas:

A) Define uma dependência entre objetos (essa é a finalidade do padrão Dependency Injection).

C) Ocultar a complexidade de uma classe (essa é a finalidade do padrão Facade).

D) Criar compatibilidade entre um sistema e outros frameworks (não é a finalidade do padrão Decorator).

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo