Um desenvolvedor da Prefeitura Municipal de Joinville está ...

Próximas questões
Com base no mesmo assunto
Q3986714 Engenharia de Software
Um desenvolvedor da Prefeitura Municipal de Joinville está trabalhando em um sistema de geração de relatórios. Ele precisa de uma solução que permita criar diferentes tipos de relatórios (PDF, HTML, Excel) utilizando o mesmo processo de construção, mas com representações finais distintas. Para isso, busca um padrão de projeto criacional que possibilite separar a construção de um objeto da sua representação final, permitindo que o mesmo processo possa gerar diferentes versões do produto. Qual padrão de projeto atende a essa necessidade?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: E

Fundamento decisivo: A expressão-chave do enunciado é a separação entre construção e representação final, com um mesmo processo gerando saídas distintas; isso identifica o Builder e fixa a alternativa E.

Tema central: Padrão Builder
Análise das alternativas
A
Errada
Flyweight é um padrão estrutural voltado ao compartilhamento de objetos para economia de memória. Isso não atende ao requisito de usar o mesmo processo de construção para obter diferentes representações finais.
B
Errada
Decorator é um padrão estrutural usado para adicionar responsabilidades a objetos dinamicamente. O enunciado não trata de acrescentar comportamentos, mas de separar construção e representação para gerar variações do produto.
C
Errada
Observer é um padrão comportamental de notificação entre objetos dependentes. O problema apresentado não é de comunicação entre objetos, e sim de criação de diferentes representações por um processo comum.
D
Errada
Mediator é um padrão comportamental que centraliza interações entre objetos. Ele não resolve a necessidade central do enunciado, que é separar a construção do produto de sua representação final.
E
Certa
Builder é um padrão criacional cuja característica central é separar a construção de um objeto de sua representação, permitindo que o mesmo processo de construção produza diferentes versões do produto. Essa formulação coincide com o enunciado e torna a alternativa E a correta.
Pegadinha da questão
A expressão decisiva é "separar a construção de um objeto de sua representação final". A confusão possível está em marcar um padrão estrutural, como Decorator, por causa das diferentes saídas do relatório.
Dica para questões semelhantes
  • Quando o enunciado trouxer a ideia de mesmo processo de construção gerando produtos finais diferentes, procure Builder.
  • Se a própria descrição mencionar separar construção e representação, trate isso como marca conceitual decisiva de Builder.
  • Antes de marcar, confira a categoria do padrão pedida: aqui o enunciado exige um padrão criacional, o que já elimina padrões estruturais e comportamentais incompatíveis com o núcleo do problema.

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

  • Padrão Correto: Builder (Alternativa E).
  • Classificação: Padrão Criacional (focado em como os objetos são instanciados).
  • Separação de Responsabilidades: Ele separa o algoritmo de construção (a lógica de "como" montar) da representação final (o formato do produto).
  • Mesmo Processo, Diferentes Resultados: Permite que uma sequência de passos idêntica produza objetos com formatos ou conteúdos distintos (PDF vs. Excel).
  • Abstração da Complexidade: O cliente não precisa saber como montar cada parte do relatório; ele apenas solicita ao "Diretor" que inicie a construção.

Para não confundir na prova, lembre-se das palavras-chave de cada um:

  • Flyweight (Estrutural):
  • Foco: Economia de memória.
  • Uso: Compartilhamento de estados comuns entre muitos objetos pequenos.
  • Decorator (Estrutural):
  • Foco: Adicionar funções.
  • Uso: Envolver um objeto para dar a ele novas responsabilidades sem mudar sua classe.
  • Observer (Comportamental):
  • Foco: Notificação/Evento.
  • Uso: Quando um objeto muda, outros "assinantes" são avisados automaticamente.
  • Mediator (Comportamental):
  • Foco: Desacoplamento de comunicação.
  • Uso: Centralizar a conversa entre vários objetos em um único mediador para evitar bagunça nas conexões.

Clique para visualizar este comentário

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