Questão nº 56
Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2024 (nº 56)
Um time de desenvolvimento está trabalhando em um sistema financeiro que processa transações bancárias. Para garantir que o sistema seja flexível, escalável e fácil de manter, o time decide usar padrões de projeto. Após uma análise cuidadosa de uma situação encontrada, eles escolhem como solução uma combinação de dois padrões de projeto. O primeiro padrão de projeto escolhido é usado para criar instâncias de objetos necessários para processar diferentes tipos de transações, enquanto o segundo padrão de projeto escolhido garante que o sistema possa tratar uma série de requisições de transações de forma flexível e extensível.
Considerando-se o contexto descrito, quais são os dois padrões de projeto escolhidos?
- AAbstract Factory e Command
- BBuilder e Strategy
- CFactory Method e Chain of Responsibility (alternativa correta)
- DPrototype e Mediator
- ESingleton e Observer
Resposta comentada
Gabarito Alternativa C
Conceito-chave: Padrões de projeto são soluções reutilizáveis para problemas comuns. Aqui, o problema é duplo: criar objetos de transação (sem acoplar o código a classes concretas) e encadear o processamento dessas transações de forma flexível (cada etapa pode tratar ou passar adiante).
- (A) Incorreta: Abstract Factory cria famílias de objetos relacionados, mas não é ideal para "tipos de transações" individuais; Command encapsula uma ação como objeto, mas não cria uma cadeia de tratamento sequencial.
- (B) Incorreta: Builder é para construção passo a passo de um objeto complexo, não para selecionar tipos de transação; Strategy troca algoritmos em tempo de execução, mas não encadeia requisições em sequência.
- (C) Correta: Factory Method define uma interface para criar objetos, deixando subclasses decidirem qual classe instanciar (perfeito para "diferentes tipos de transações"); Chain of Responsibility permite passar a requisição por uma corrente de handlers, onde cada um decide processar ou repassar (ideal para "série de requisições de forma flexível e extensível").
- (D) Incorreta: Prototype clona objetos existentes, não cria tipos variados de transação; Mediator centraliza comunicação entre objetos, mas não cria uma cadeia de processamento.
- (E) Incorreta: Singleton garante uma única instância global, não resolve criação variada; Observer notifica mudanças de estado, não processa requisições em cadeia.
Armadilha da banca (no distrator mais tentador, A): A combinação Abstract Factory + Command parece plausível porque "Abstract Factory" soa como "criar objetos" e "Command" soa como "executar ações". Mas a pegadinha é que Abstract Factory cria famílias de objetos relacionados (ex.: botões e janelas do mesmo tema), não tipos diferentes de uma mesma família (como transações). E Command encapsula uma única ação, não uma cadeia de tratamento onde cada elo decide se processa ou repassa — isso é exclusivo do Chain of Responsibility. A banca troca "Factory Method" por "Abstract Factory" e "Chain of Responsibility" por "Command" para confundir quem decora nomes sem entender o propósito.
Fonte: CESGRANRIO BASA 01/2024 Técnico Científico - Área de Formação: Tecnologia da Informação (Caderno Prova B). Reproduzida para fins de estudo.