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
fc035589
Banca
FCC
Órgão
ARTESP
Ano
2017
Nível
Médio
Cargo
Agente de Fiscalização à Regulação de Transporte - Tecnologia de Informação
Suponha que em uma organização existe um conjunto de cargos e para cada cargo existem regras de cálculo da taxa de produtividade, cujo valor é determinado por uma porcentagem do salário base do funcionário. Este valor é acrescido ao salário do funcionário como um bônus. Um desenvolvedor deve criar uma solução que utilize um design pattern (padrão de projeto) cuja intenção é: “definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. O padrão de projeto permite que o algoritmo varie independentemente dos clientes que o utilizam”. Ou seja, o padrão sugere que algoritmos parecidos (métodos de cálculo da taxa de produtividade) sejam separados de quem os utiliza (funcionário). O padrão, além de encapsular os algoritmos da mesma família, também permite a reutilização do código. Nesta situação, caso a regra para cálculo da taxa de produtividade de dois tipos de funcionários, como Desenvolvedor e DBA, seja a mesma, não é necessário escrever código extra. Caso seja necessário incluir um novo cargo, basta implementar sua estratégia de cálculo da taxa ou reutilizar outra similar. Nenhuma outra parte do código precisa ser alterada.O design pattern mencionado na situação apresentada é
AAbstract Method.
BBuilder.
CPrototype.
DStrategy.
ESingleton.
Revelar gabarito e comentário▾
GabaritoD — Strategy.
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ão de Projeto Strategy
Gabarito: letra D. A descrição apresentada corresponde exatamente ao padrão Strategy, que tem como intenção "definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. O padrão de projeto permite que o algoritmo varie independentemente dos clientes que o utilizam". No cenário, os diferentes cálculos de taxa de produtividade representam algoritmos intercambiáveis, e o funcionário é o cliente que os utiliza.
Padrão de Projeto
Categoria (GoF)
Intenção Principal
Aplicação no Cenário
Strategy
Comportamental
Definir uma família de algoritmos, encapsulá-los e torná-los intercambiáveis
Cálculos de produtividade como algoritmos intercambiáveis; funcionário como cliente
Abstract Method
— (não é padrão GoF)
Não se aplica
Não é um padrão reconhecido; confunde-se com Template Method
Builder
Criacional
Construir objetos complexos passo a passo
Não se aplica a algoritmos intercambiáveis
Prototype
Criacional
Criar novos objetos a partir de um protótipo
Não se aplica a algoritmos
Singleton
Criacional
Garantir uma única instância de uma classe
Não se aplica a algoritmos intercambiáveis
Padrões GoF
1Comportamentais
Strategy
Família de algoritmos
Encapsulamento
Intercambiáveis
Template Method
Esqueleto de algoritmo
2Criacionais
Builder
Objeto complexo passo a passo
Prototype
Cópia a partir de protótipo
Singleton
Única instância
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Abstract Method não é um padrão de projeto GoF reconhecido. O padrão que define um esqueleto de algoritmo é o Template Method, que também é comportamental, mas não tem o foco em intercambiabilidade de algoritmos como o Strategy.
Alternativa B — ❌ Incorreta
Builder é um padrão criacional, usado para construir objetos complexos passo a passo. Não se aplica a algoritmos intercambiáveis.
Alternativa C — ❌ Incorreta
Prototype é um padrão criacional que cria novos objetos a partir de um protótipo, não tem relação com algoritmos.
Alternativa D — ✅ Correta
Strategy permite definir uma família de algoritmos (cálculos de produtividade), encapsulá-los e torná-los intercambiáveis. O cliente (funcionário) pode usar diferentes estratégias sem conhecer os detalhes de implementação, promovendo reutilização e facilidade de extensão.
Alternativa E — ❌ Incorreta
Singleton é um padrão criacional que garante uma única instância de uma classe. Não tem relação com algoritmos intercambiáveis.