O Tribunal Regional do Trabalho está desenvolvendo um sistem...

Próximas questões
Com base no mesmo assunto
Q3290588 Arquitetura de Software
O Tribunal Regional do Trabalho está desenvolvendo um sistema de gestão de documentos judiciais que permite o armazenamento, recuperação e edição de diversos tipos de documentos, como petições, sentenças e relatórios de audiência. O sistema deve permitir que novas funcionalidades sejam adicionadas de forma modular e que alterações nos requisitos de cada tipo de documento não afetem o sistema como um todo. Nessas circunstâncias, a equipe de desenvolvimento deverá aplicar, corretamente, o padrão de projeto mais apropriado, que é o  
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: C

Fundamento decisivo: O ponto decisivo é a necessidade de tratar tipos de documentos com requisitos próprios sem espalhar mudanças pelo sistema, o que pede desacoplamento da criação/seleção das classes concretas.

Tema central: Factory Method e desacoplamento da criação por tipos concretos
Análise das alternativas
A
Errada
Singleton trata de controlar uma única instância e um ponto global de acesso, o que não resolve extensão por tipos de documento.
B
Errada
Adapter serve para compatibilizar interfaces incompatíveis entre componentes, não para criar ou selecionar variações de documentos.
C
Certa
A alternativa C está certa porque Factory Method define uma interface para criar um objeto, deixando que subclasses ou implementações específicas decidam qual classe instanciar. Isso desacopla o código cliente das classes concretas e facilita a extensão por novos tipos de documentos, exatamente o que o enunciado pede.
D
Errada
Composite é usado para estruturas parte-todo e tratamento uniforme de objetos simples e compostos, o que não é o caso do enunciado.
E
Errada
Decorator adiciona responsabilidades dinamicamente a objetos existentes; aqui o foco é o padrão de criação para novos tipos de documentos.
Pegadinha da questão
A confusão era associar “novas funcionalidades” a Decorator, quando o enunciado aponta para a variação por tipo de documento e o desacoplamento da criação.
Dica para questões semelhantes
  • Se o problema central é incluir novos tipos concretos sem mexer no restante do sistema, procure um padrão de criação que desacople a instanciação.
  • Não escolha o padrão pela palavra solta do enunciado; identifique qual problema técnico está sendo resolvido.
  • Quando a questão destaca variação por tipos com requisitos próprios, compare as alternativas pela finalidade principal de cada padrão.

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

✅ Alternativa correta: C

  Factory Method

Explicação:

Cenário descrito:

  O sistema gerencia diversos tipos de documentos (petições, sentenças, relatórios).

  Cada tipo pode ter regras e comportamentos diferentes.

  O sistema deve ser modular, ou seja:

    Permitir adição de novos tipos de documentos sem impactar o código existente.

    Evitar modificações diretas nos componentes centrais.

Solução ideal: Padrão Factory Method

O que é o Factory Method?

  Um padrão criacional que define uma interface para criar objetos, mas permite às subclasses decidir qual classe instanciar.

  É perfeito para cenários com muitas variações de um tipo base, como:

    Documentos que herdam de uma interface Documento, mas se comportam de forma diferente (ex: Peticao, Sentenca, RelatorioAudiencia).

❌ Por que as outras alternativas estão erradas?

Alternativa Por que não se aplica

A – Singleton Garante uma única instância global. Não resolve modularidade nem criação flexível de objetos.

B – Adapter Serve para adaptar interfaces incompatíveis. Não é sobre criação ou modularidade.

D – Composite Serve para representar estruturas em árvore, como menus ou arquivos e pastas.

E – Decorator Serve para adicionar funcionalidades a um objeto em tempo de execução, mas não resolve criação modular com diferentes classes.

Fonte: ChatGPT.

O padrão de projeto mais adequado para esse cenário é o Factory Method (Alternativa C).

Justificativa:

O problema central é a criação flexível de diferentes tipos de documentos (petições, sentenças, relatórios) com requisitos variados, garantindo:

  1. Extensibilidade modular: Adicionar novos tipos de documentos sem alterar o código existente.
  2. Baixo acoplamento: Isolar as regras de criação de cada documento, evitando impacto no sistema geral.

Como o Factory Method resolve:

  • Define uma interface única para criar documentos (ex: ).
  • Cada tipo de documento (petição, sentença, etc.) implementa sua própria lógica de criação em subclasses especializadas.
  • Novos documentos são adicionados criando novas subclasses sem modificar o código cliente existente.

Por que as outras alternativas não se aplicam:

  • Singleton (A): Controla instância única (ex: conexão com BD), irrelevante para criação de múltiplos documentos.
  • Adapter (B): Converte interfaces incompatíveis, não trata criação modular.
  • Composite (D): Gerencia hierarquias de objetos (ex: pastas com documentos), não foca na criação.
  • Decorator (E): Adiciona comportamentos dinâmicos (ex: criptografia), mas não resolve a variação na criação de objetos.

Conclusão:

O Factory Method é ideal para encapsular a criação de objetos com variações (como os tipos de documentos judiciais), garantindo modularidade e conformidade com o Open/Closed Principle.

Resposta: Alternativa C (Factory Method).

Requisito central: facilidade de expansão modular → adicionar novos tipos de documentos sem afetar o restante do sistema.

Avaliando as alternativas:

  • A) Singleton errado. Serve apenas para garantir uma única instância de uma classe. Não resolve modularidade ou criação de vários tipos de documentos.
  • B) Adapter errado. Usado para adaptar interfaces incompatíveis. Não é o caso aqui.
  • C) Factory Method certo. É o padrão criacional que define uma interface para criar objetos, mas deixa para as subclasses a decisão de qual classe instanciar. Perfeito para o caso: novos tipos de documentos (Petições, Sentenças, Relatórios) podem ser adicionados sem alterar o código cliente, apenas criando novas fábricas/métodos de criação.
  • D) Composite errado. Usado para tratar objetos individuais e composições de forma uniforme (árvores hierárquicas). Não se aplica diretamente aqui.
  • E) Decorator (escrito “Decorat”) errado. Serve para adicionar responsabilidades dinamicamente a objetos, não para modularizar criação de tipos diferentes.

  • Singleton → controla instância única. Não resolve modularidade nem criação flexível.
  • Adapter → adapta interfaces incompatíveis. Não é o caso.
  • Composite → trata estruturas em árvore (parte-todo). Não é o problema descrito.
  • Decorator → adiciona comportamento dinamicamente, mas não resolve a criação desacoplada de diferentes tipos de documento.
  • Factory Method → permite criar objetos sem acoplar o código à classe concreta. Novos tipos de documento podem ser adicionados criando novas subclasses, sem alterar o código cliente.

Aqui o ponto-chave é:

“novos tipos de documento sem afetar o sistema como um todo”.

Isso é exatamente o propósito do Factory Method: delegar a criação para subclasses e evitar dependência direta de classes concretas.

Resposta correta:

C) Factory Method.

Clique para visualizar este comentário

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