Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FCC 2017
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
fc036532
Banca
FCC
Órgão
DPE-RS
Ano
2017
Nível
Superior
Cargo
Analista - Desenvolvimento de Sistemas
Considere que é necessário fazer um programa que vá funcionar em várias plataformas, como Windows, Linux, Mac OS etc. O programa fará uso de diversas abstrações de janelas gráficas, por exemplo, janela de diálogo, janela de aviso, janela de erro etc. Um Analista sugeriu o uso de um padrão de projeto GoF estrutural que fornece um nível de abstração maior que o Adapter, pois são separadas as implementações e as abstrações, permitindo que cada uma varie independentemente.O padrão sugerido pelo Analista é o
ABridge e as implementações seriam as classes de janela das plataformas.
BPrototype, pois especifica os tipos de plataformas a serem criadas usando uma instância protótipo e cria novas interfaces pela cópia desse protótipo.
CMVC, de forma que a camada Model fique responsável por acionar as janelas, a camada Controller exiba os dados do Model ao usuário e a camada View armazene as classes que fazem a comunicação com o Banco de Dados.
DVisitor e as interfaces seriam executadas nos elementos de cada plataforma.
EState, que permite a uma plataforma alterar o comportamento de sua interface.
Revelar gabarito e comentário▾
GabaritoA — Bridge e as implementações seriam as classes de janela das plataformas.
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 GoF: Bridge
Gabarito: letra A. O padrão Bridge (Ponte) é um padrão estrutural GoF cujo objetivo é desacoplar uma abstração da sua implementação, permitindo que ambas variem independentemente. A descrição do enunciado — "fornece um nível de abstração maior que o Adapter, pois separa implementações e abstrações" — é exatamente a definição do Bridge. As implementações seriam as classes específicas de janela para cada plataforma (Windows, Linux, Mac OS).
Os padrões GoF dividem-se em três categorias: criacionais, estruturais e comportamentais. O Bridge é estrutural, assim como Adapter, Composite, Decorator, etc. As demais alternativas pertencem a outras categorias ou não são padrões GoF.
Padrão GoF
Categoria
Objetivo Principal
Aplicação no Contexto
Correta?
Bridge
Estrutural
Desacoplar abstração da implementação, permitindo variação independente
Separar interfaces de janela (abstrações) das implementações específicas de cada plataforma (Windows, Linux, Mac OS)
✅ Sim
Prototype
Criacional
Criar objetos por cópia de um protótipo
Não se aplica; não resolve variação entre plataformas
❌ Não
MVC
Arquitetural
Separar dados (Model), exibição (View) e controle (Controller)
Descrição incorreta; não é padrão GoF estrutural
❌ Não
Visitor
Comportamental
Adicionar operações a elementos sem modificar suas classes
Não se aplica à separação abstração/implementação
❌ Não
State
Comportamental
Alterar comportamento conforme estado interno
Não se aplica à variação entre plataformas
❌ Não
Padrões GoF
1Estruturais
Adapter
Bridge
Separa abstração da implementação
Variação independente
Composite
Decorator
2Criacionais
Prototype
3Comportamentais
Visitor
State
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
O Bridge separa a abstração (a interface de janela) da implementação (o código específico de cada plataforma). Permite que novas abstrações (tipos de janela) e novas implementações (novas plataformas) sejam adicionadas sem afetar o outro lado. É a solução clássica para o problema de portabilidade de interfaces gráficas.
Alternativa B — ❌ Incorreta
Prototype é um padrão criacional, usado para criar novos objetos a partir de um protótipo (cópia). Não trata de separação entre abstração e implementação, nem resolve o problema de múltiplas plataformas.
Alternativa C — ❌ Incorreta
MVC (Model-View-Controller) é um padrão arquitetural, não um padrão GoF estrutural. Além disso, a descrição dada está errada: a camada Model contém os dados e a lógica de negócio; a View exibe os dados; e o Controller gerencia a interação do usuário. A alternativa inverte os papéis (diz que o Model aciona janelas e a View faz comunicação com banco).
Alternativa D — ❌ Incorreta
Visitor é um padrão comportamental. Permite adicionar novas operações a uma estrutura de objetos sem modificar as classes dos elementos. Não se aplica à separação de abstração e implementação entre plataformas.
Alternativa E — ❌ Incorreta
State é um padrão comportamental. Permite que um objeto altere seu comportamento quando seu estado interno muda. Não tem relação com a variação independente de abstrações e implementações.
NÃO CAIA NESSA!
A banca explora a confusão entre padrões GoF e padrões arquiteturais como MVC. Lembre-se: Bridge é o único padrão estrutural que desacopla abstração da implementação. Ao ver "separar implementações e abstrações" e "nível maior que Adapter", a resposta certa é Bridge.