Questão de Engenharia de Software — Padrões de Projeto (Engenharia de Software) — VUNESP 2023
Engenharia de Software›Padrões de Projeto (Engenharia de Software)
Código
vu196430
Banca
VUNESP
Órgão
Pref Pindamonhangaba
Ano
2023
Cargo
WDes (Pref Pinda)
Assinale a alternativa que apresenta apenas padrões de projeto (design patterns) comportamentais:
AIterator, Object Pool e Composite.
BMediator, Facade e Decorator.
CIterator, Mediator e Template Method.
DPrototype, Decorator e Composite.
EObject Pool, Bridge e Composite.
Revelar gabarito e comentário▾
GabaritoC — Iterator, Mediator e Template Method.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Padrões de projeto (Design Patterns) comportamentais
Gabarito: letra C. A alternativa correta é a que apresenta apenas padrões comportamentais: Iterator, Mediator e Template Method — todos pertencentes à família comportamental dos padrões GoF (Gang of Four). As demais alternativas misturam padrões de outras famílias (criacionais e estruturais), como veremos na análise de cada uma.
Os padrões de projeto (design patterns) são soluções gerais e reutilizáveis para problemas recorrentes no projeto de software. Eles foram popularizados pelo livro Design Patterns: Elements of Reusable Object-Oriented Software (1994), escrito por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides — os chamados "Gang of Four" (GoF). O livro cataloga 23 padrões, organizados em três famílias conforme a finalidade:
Padrões de Criação (Creational): lidam com o processo de criação de objetos, abstraindo a forma como eles são instanciados. Exemplos: Singleton, Factory Method, Abstract Factory, Builder, Prototype.
Padrões Estruturais (Structural): tratam da composição de classes e objetos para formar estruturas maiores, definindo como os objetos se relacionam. Exemplos: Adapter, Decorator, Composite, Facade, Bridge, Proxy, Flyweight.
Padrões Comportamentais (Behavioral): focam na comunicação e interação entre objetos, definindo responsabilidades e algoritmos. Exemplos: Iterator, Mediator, Template Method, Observer, Strategy, Command, State, Chain of Responsibility, Visitor, Memento, Interpreter.
A classificação é essencial para resolver questões como esta: a banca mistura padrões de famílias diferentes e espera que o candidato saiba identificar a qual família cada um pertence. A pegadinha clássica é confundir padrões estruturais (como Composite, Decorator, Facade, Bridge) com comportamentais, ou incluir padrões criacionais (como Prototype, Object Pool) no meio.
Vamos analisar cada alternativa, identificando a família de cada padrão listado.
Alternativa A — ❌ Incorreta
A alternativa A traz Iterator, Object Pool e Composite. O Iterator é comportamental, mas o Object Pool é um padrão criacional (gerencia um conjunto de objetos reutilizáveis, controlando sua criação e disponibilização) e o Composite é estrutural (compõe objetos em estruturas de árvore para representar hierarquias parte-todo). Portanto, não são apenas comportamentais.
Alternativa B — ❌ Incorreta
A alternativa B traz Mediator, Facade e Decorator. O Mediator é comportamental, mas o Facade é estrutural (fornece uma interface unificada para um conjunto de interfaces de um subsistema) e o Decorator também é estrutural (adiciona responsabilidades a um objeto dinamicamente). Logo, mistura famílias.
Alternativa C — ✅ Correta ⟵ GABARITO
A alternativa C traz Iterator, Mediator e Template Method. Todos os três são padrões comportamentais:
Iterator: fornece uma maneira de acessar sequencialmente os elementos de um objeto agregado sem expor sua representação interna.
Mediator: define um objeto que encapsula a interação entre um conjunto de objetos, promovendo baixo acoplamento.
Template Method: define o esqueleto de um algoritmo em uma operação, deixando alguns passos para as subclasses.
Portanto, esta é a única alternativa que contém apenas padrões comportamentais.
Alternativa D — ❌ Incorreta
A alternativa D traz Prototype, Decorator e Composite. O Prototype é criacional (cria novos objetos copiando um protótipo existente), enquanto Decorator e Composite são estruturais. Nenhum dos três é comportamental.
Alternativa E — ❌ Incorreta
A alternativa E traz Object Pool, Bridge e Composite. O Object Pool é criacional, o Bridge é estrutural (separa uma abstração de sua implementação) e o Composite é estrutural. Novamente, nenhum comportamental.
NÃO CAIA NESSA!
A banca adora misturar padrões de famílias diferentes para confundir. O candidato que decora apenas os nomes, sem saber a classificação, tende a marcar alternativas com padrões famosos como Composite e Decorator, achando que são comportamentais. Lembre-se: Composite, Decorator, Facade e Bridge são estruturais; Prototype e Object Pool são criacionais; Iterator, Mediator e Template Method são comportamentais. Com treino, você identifica essas trocas de longe 💪.
PEGA ESSA DICA!
Para fixar, monte uma tabela mental com os padrões mais cobrados por família:
Família
Padrões típicos
Criacionais
Singleton, Factory Method, Abstract Factory, Builder, Prototype, Object Pool
Na prova, ao ver um padrão, pergunte-se: "ele resolve um problema de criação, de estrutura ou de interação/comportamento?". Essa pergunta resolve a questão.