Padrões de Projetos GoF: Dicas de Memorização e Questões de Concursos

Como decorar os padrões de projetos Criacionais e Estruturais

Fala, pessoal! Beleza?

Vamos supor que caia a seguinte questão sobre Padrões de Projetos na prova:

[FCC 2019 TRF 4ª Região – Analista Judiciário – Sistemas de Tecnologia da Informação]

  • Uma Analista de TI quer criar um aplicativo capaz de trocar mensagens entre diversas plataformas móveis, um Android enviando mensagem para um iOS, um Windows Phone trocando mensagens com um Android etc. O problema é que cada uma destas plataformas implementa maneiras diferentes de receber mensagens. Ela sabe que criar vários métodos para cada plataforma não seria uma solução adequada, pois, se o aplicativo precisar incluir uma nova plataforma, outros métodos teriam que ser criados. A modelagem de relacionamentos muitos para muitos pode deixar o projeto do sistema demasiadamente complexo.
  • A Analista procurou, então, um padrão de projeto para utilizar na solução. Dentre os padrões GoF, encontrou um que permite definir um objeto que encapsula a forma como um conjunto de objetos interage. Este padrão promove o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente e permite variar o uso da interação de forma independente. Atua como um interlocutor entre relacionamentos muitos para muitos, ao evitar uma referência explícita aos objetos, sendo adequado ao problema.

Trata-se do padrão comportamental:

[A] Mediator.

[B] Composite.

[C] Adapter.

[D] Factory Method.

[E] Prototype.

O que fazemos nessa situação, caso não tenhamos na ponta da língua os conceitos dos 23 Padrões de Projetos GoF (Gang of Four) e suas descrições? Chutamos e vamos para próxima questão? E se eu disser que podemos “matar” essa questão e outras várias sobre esse assunto estudando apenas duas dicas de memorização? Vocês acreditariam em mim?

Então venham comigo que vou mostrar essas dicas! Simbora, papai!

Teoria

Os 23 Padrões de Projetos GoF são divididos na seguinte classificação:

  • Padrões Criacionais;
  • Padrões Estruturais; e
  • Padrões Comportamentais.

Padrões Criacionais

Conceituação:

  • Abstraem e/ou adiam o processo criação dos objetos; e
  • Fornecem mecanismos de criação de objetos que aumentam a flexibilidade e a reutilização do código existente.

Padrões:

  • Abstract Factory
  • Builder
  • Factory Method
  • Prototype
  • Singleton

Padrões Estruturais

Conceituação:

  • Preocupam-se com a forma como classes e objetos são compostos para formar estruturas maiores; e
  • Explicam como montar objetos e classes em estruturas maiores, mantendo as estruturas flexíveis e eficientes.

Padrões:

  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Proxy

Padrões Comportamentais

Conceituação:

  • Concentram-se nos algoritmos e atribuições de responsabilidades entre os objetos; e
  • Cuidam de uma comunicação eficaz e da atribuição de responsabilidades entre objetos.

Padrões:

  • Chain of Responsibility
  • Iterator
  • Observer
  • Strategy
  • Visitor
  • Interpreter
  • Command
  • Mediator
  • Memento
  • State
  • Template Method

Resumindo, temos:

Classificação dos Padrões de Projetos

Escopo
Criacionais
Estruturais
Comportamentais
Classe
Factory Method
Adapter
Interpreter
Template Method
Objeto
Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweygth
Proxy
Chain of Responsability
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor

Na próxima seção, iremos estudar como memorizar os Padrões Criacionais e Padrões Estruturais. Se o padrão pedido na questão não for de nenhuma dessas classificações citadas, então é um Padrão Comportamental.

Dicas de memorização

Padrões Criacionais

Dica:

  • Uma fábrica (Factory Method) abstrata (Abstract Factory) constrói (Builder) um protótipo (Prototype) único (Singleton).

Padrões Criacionais

Padrões Estruturais

Dica:
  • A ponte (Bridge) adaptada (Adapter) é composta (Composite) de decorações (Decorator) na fachada (Façade) para o peso mosca (Flyweight) se “aproxymar” (Proxy).

Padrões Estruturais

Acabei forçando nessa dica na palavra “aproxymar”, mas tive que encaixar o padrão Proxy de alguma forma na frase para manter o sentido. 😃

Observação: para uma melhor memorização, tentem gravar na mente as imagens e repetir as frases da dicas. Assim, vocês podem memorizar de forma visual.

Com essas duas dicas, podemos matar várias questões sobre Padrões de Projetos, sem precisar nem saber a descrição dos 23 padrões citados no artigo.

Ainda duvidando? Então vamos para a parte mais interessante do artigo: a resolução que questões de concursos.

Questões de concursos

[VUNESP 2017 TJM/SP – Técnico de Comunicação e Processamento de Dados] As três principais categorias em que se dividem os padrões de projeto são:

[A] simples, complexos e estruturados.

[B] de criação, estruturais e de comportamento.

[C] de rede, de criação e complexos.

[D] orientados a objetos, complexos e de rede.

[E] relacionais, orientados a objetos e hierárquicos.

Comentários:

Apenas para esquentar, a questão pediu só a classificação dos Padrões de Projetos.

Os 23 Padrões de Projetos GoF são divididos na seguinte classificação:

  • Padrões Criacionais;
  • Padrões Estruturais; e
  • Padrões Comportamentais.

Gabarito: letra B.

[UFMA 2019 UFMA – Analista de Tecnologia da Informação] De acordo com Gamma, padrões de projeto são soluções reutilizáveis de software orientado a objetos.

Considere as três afirmativas a seguir e depois informe a alternativa correta.

[I] Padrões de projeto de criação são aqueles que abstraem o processo de instanciação de objetos.

[II] Padrões de projeto estruturais se preocupam com a forma como classes e objetos são compostos para formar estruturas maiores.

[III] Padrões de projeto comportamentais se preocupam com algoritmos e a atribuição de responsabilidades entre objetos.

De acordo com Gamma, padrões de projeto são soluções reutilizáveis de software orientado a objetos. Considere as três afirmativas a seguir e depois informe a alternativa correta.

[A] Apenas a afirmativa I está correta.

[B] Apenas as afirmativas I e II estão corretas.

[C] Apenas as afirmativas I e III estão corretas.

[D] Apenas as afirmativas II e III estão corretas.

[E] As três afirmativas estão corretas.

Comentários:

Essa questão agora está pedindo a descrição de cada classificação. Por enquanto, não colocamos em prática nossas dicas.

Item I: “Padrões de projeto de criação são aqueles que abstraem o processo de instanciação de objetos.”

CERTO.

Item II: “Padrões de projeto estruturais se preocupam com a forma como classes e objetos são compostos para formar estruturas maiores.”

CERTO.

Item III: “Padrões de projeto comportamentais se preocupam com algoritmos e a atribuição de responsabilidades entre objetos.”

CERTO.

Gabarito: letra E.

[PR-4/UFRJ 2018 UFRJ – Analista de Tecnologia da Informação] No que diz respeito a padrões de projetos, assinale a alternativa que apresenta somente padrões estruturais.

[A] Adapter, Bridge, Command, Decorator e Template.

[B] Adapter, Command, Flyweight, Observer e Proxy.

[C] Composite, Decorator, Singleton, Template e Proxy.

[D] Bridge, Composite, Decorator, Facade e Proxy.

[E] Bridge, Command, Flyweight, Observer e Singleton.

Comentários:

Agora sim. Vamos usar essa questão para colocar as dicas à prova.

Padrões Criacionais:

  • Uma fábrica (Factory Method) abstrata (Abstract Factory) constrói (Builder) um protótipo (Prototype) único (Singleton).

Padrões Estruturais:

  • A ponte (Bridge) adaptada (Adapter) é composta (Composite) de decorações (Decorator) na fachada (Façade) para o peso mosca (Flyweight) se “aproxymar” (Proxy).

A questão está pedindo os Padrões Estruturais e analisando todas as letras, temos os seguintes padrões dessa classificação (em negrito):

  • [A] Adapter, Bridge, Command, Decorator e Template.
  • [B] Adapter, Command, Flyweight, Observer e Proxy.
  • [C] Composite, Decorator, Singleton, Template e Proxy.
  • [D] Bridge, Composite, Decorator, Facade e Proxy.
  • [E] Bridge, Command, Flyweight, Observer e Singleton.

Os outros padrões são:

  • Padrão Criacional:
    • Singleton;
  • Padrões Comportamentais:
    • Command;
    • Template; e
    • Observer.

Então a única letra que possui um subconjunto de cinco padrões estruturais é a letra D.

Gabarito: letra D.

[INAZ do Pará 2019 CORE/SP – Analista de TI] “Os padrões de projetos tornam mais fácil reutilizar soluções e arquiteturas bem-sucedidas para construir softwares orientados a objetos de forma flexível e fácil de manter.”

Disponível em: https://www.devmedia.com.br/conheca-os-padroes-de-projeto/957/. Acesso em: 16.11.2018

Quais padrões de projeto são padrões de projeto comportamentais?

[A] Command, Observer e Interator.

[B] Singleton, Visitor e State.

[C] Prototype, Adapter e Bridge.

[D] Memento, Builder e Mediator.

[E] Proxy, Singleton e Decorator.

Comentários:

A questão está pedindo justamente os padrões da classificação que não tiveram nenhuma dica: Padrões Comportamentais. É necessário estar com as duas dicas memorizadas para fazer o processo de exclusão e encontrar esses padrões comportamentais. Tentem repetir as duas frases constantemente para as dicas na memória.

Analisando todas as letras, temos os seguintes padrões comportamentais (em negrito):

  • [A] Command, Observer e Interator.
  • [B] Singleton, Visitor e State.
  • [C] Prototype, Adapter e Bridge.
  • [D] Memento, Builder e Mediator.
  • [E] Proxy, Singleton e Decorator.

Os outros padrões são:

  • Padrões Criacionais:
    • Builde;
    • Prototype; e
    • Singleton;
  • Padrões Estruturais:
    • Bridge;
    • Adapte;
    • Decorator; e
    • Proxy.

Então a única letra que possui um subconjunto de três padrões comportamentais é a letra A.

Gabarito: letra A.

[IESES 2017 CREA/SC – Analista de Sistemas] Os três grupos distintos em que é organizado o padrão GoF são:

[A] Criacionais, estruturais e comportamentais.

[B] Metodo, Classe e Mensagens.

[C] Classe, objeto e método.

[D] Comportamentais, Estado e Classe.

Comentários:

Mais uma questão que pediu apenas a classificação dos Padrões de Projetos.

Os 23 Padrões de Projetos GoF são divididos na seguinte classificação:

  • Padrões Criacionais;
  • Padrões Estruturais; e
  • Padrões Comportamentais.

Analisando todas as letras, temos os seguintes padrões comportamentais (em negrito):

  • [A] Criacionais, estruturais e comportamentais.
  • [B] Metodo, Classe e Mensagens.
  • [C] Classe, objeto e método.
  • [D] Comportamentais, Estado e Classe.

Gabarito: letra A.

[IESES  2017 CEGÁS – Assistente Técnico – Programador] O padrão GoF apresenta três grupos. Indique a alternativa cujo termo NÃO pertence ao GoF:

[A] Comportamentais.

[B] Operacionais.

[C] Estruturais.

[D] Criacionais.

Comentários:

A questão está pedindo o inverso das que vimos sobre a classificação dos Padrões de Projetos. Ela quer a classificação não existente: Padrões Operacionais, citado na letra B.

Gabarito: letra B.

[IADES 2018 CFM – Analista de Tecnologia da Informação] Com base nas classificações de padrões de projeto de acordo com o respectivo propósito, assinale a alternativa correta.

[A] Padrões temporais são aqueles que garantem a chamada dos métodos de cada classe nos instantes apropriados.

[B] Padrões estruturais lidam com a composição de classes ou objetos, bem como com a própria criação.

[C] Padrões comportamentais caracterizam a forma como objetos ou classes interagem entre si e distribuem responsabilidades. É o que ocorre, por exemplo, com o padrão Prototype.

[D] Padrões criacionais se limitam a descrever o processo de criação de um objeto.

[E] Padrões aquisitivos descrevem a forma como os parâmetros de cada método e o valor de cada atributo de uma classe são adquiridos.

Comentários:

Temos agora uma questão que trata de três espectros dos Padrões de Projetos GoF:

  • Classificação;
  • Descrição de cada grupo de padrões; e
  • Padrões de cada grupo.

Em relação à classificação, as letras A e E estão erradas, de cara, porque Padrões temporais e Padrões aquisitivos não existem. Ficamos apenas com as letras B, C e D.

Letra B: “Padrões estruturais lidam com a composição de classes ou objetos, bem como com a própria criação”.

ERRADO. Os Padrões Estruturais não tratam da criação de objetos. Apenas da composição deles.

Letra C: “Padrões comportamentais caracterizam a forma como objetos ou classes interagem entre si e distribuem responsabilidades. É o que ocorre, por exemplo, com o padrão Prototype.”

ERRADO.  A descrição dos Padrões Comportamentais está ok, mas o padrão Prototype, como vimos em nossas dicas, é um Padrão Criacional.

Letra D: “Padrões criacionais se limitam a descrever o processo de criação de um objeto.”

CERTO.

Gabarito: letra D.

[FUNCERN 2017 IFRN – Professor – Sistemas de Informação] Um exemplo de padrão de projeto do tipo criação é o

[A] composite.

[B] proxy.

[C] interpreter.

[D] prototype.

Comentários:

Para reforçarmos:

Padrões Criacionais:

  • Uma fábrica (Factory Method) abstrata (Abstract Factory) constrói (Builder) um protótipo (Prototype) único (Singleton).

Padrões Estruturais:

  • A ponte (Bridge) adaptada (Adapter) é composta (Composite) de decorações (Decorator) na fachada (Façade) para o peso mosca (Flyweight) se “aproxymar” (Proxy).

Na questão, temos:

  • Padrão Criacional:
    • [D] prototype;
  • Padrões Estruturais:
    • [A] composite; e
    • [B] proxy;
  • Padrão Comportamental:
    • [C] interpreter.

Gabarito: letra D.

[FCC 2019 TRF 4ª Região – Analista Judiciário – Sistemas de Tecnologia da Informação]

  • Uma Analista de TI quer criar um aplicativo capaz de trocar mensagens entre diversas plataformas móveis, um Android enviando mensagem para um iOS, um Windows Phone trocando mensagens com um Android etc. O problema é que cada uma destas plataformas implementa maneiras diferentes de receber mensagens. Ela sabe que criar vários métodos para cada plataforma não seria uma solução adequada, pois, se o aplicativo precisar incluir uma nova plataforma, outros métodos teriam que ser criados. A modelagem de relacionamentos muitos para muitos pode deixar o projeto do sistema demasiadamente complexo.
  • A Analista procurou, então, um padrão de projeto para utilizar na solução. Dentre os padrões GoF, encontrou um que permite definir um objeto que encapsula a forma como um conjunto de objetos interage. Este padrão promove o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente e permite variar o uso da interação de forma independente. Atua como um interlocutor entre relacionamentos muitos para muitos, ao evitar uma referência explícita aos objetos, sendo adequado ao problema.

Trata-se do padrão comportamental:

[A] Mediator.

[B] Composite.

[C] Adapter.

[D] Factory Method.

[E] Prototype.

Comentários:

Lembram da questão lá do início do artigo? Vamos responder ela tranquilamente.

Primeiro, uma dica geral: antes de lermos o enunciado por completo, vamos procurar o núcleo dele: “Trata-se do padrão comportamental…”. Então, leia o texto completo apenas se for necessário. Tempo é crucial em provas de concursos e perder tempo em ler um texto gigante e não que iremos precisar para responder a questão é desperdício.

Bom, sabemos que o núcleo do enunciado pede o Padrão Comportamental de acordo com o texto completo. Então vamos identificar quais as letras que contém esse tipo de padrão e, se for necessário, poderemos analisar o texto completo.

Com base em nossas dicas, temos os seguintes padrões na questão:
  • Padrões Criacionais:
    • [D] Factory Method;
    • [E] Prototype;
  • Padrões Estruturais:
    • [B] Composite; e
    • [C] Adapter;
  • Padrão Comportamental:
    • [A] Mediator.

Pela nossa análise, temos apenas um Padrão Comportamental, letra A: Mediator. Nosso gabarito.

Se houvesse outro Padrão Comportamental, deveríamos então ler todo o texto para saber qual seria o gabarito. Porém, a questão trouxe apenas um padrão dessa classificação, o que podemos  concluir que apenas com o núcleo do enunciado e com nossas dicas, conseguimos chegar ao gabarito. De forma tranquila, como eu tinha prometido a vocês. =)

Gabarito: letra A.

[FCC 2017 TRF 5ª Região – Analista Judiciário – Informática – Desenvolvimento] O padrão de projeto comportamental que define uma dependência de um-para-muitos entre objetos de modo que, quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente é o

[A] Facade.

[B] Observer.

[C] Adapter.

[D] Abstract Factory.

[E] Prototype.

Comentários:

Outra questão que pede o Padrão Comportamental.

Temos os seguintes padrões na questão:

  • Padrões Criacionais:
    • [D] Abstract Factory;
    • [E] Prototype;
  • Padrões Estruturais:
    • [A] Facade;
    • [C] Adapter;
  • Padrão Comportamental:
    • [B] Observer.

Gabarito: letra B.

[COPESE/UFPI 2017 UFPI – Analista de Tecnologia da Informação] A respeito de padrões de projeto, existem os padrões que descrevem maneiras comuns de organizar classes e objetos em um sistema e há aqueles que fornecem estratégias testadas para modelar a maneira como os objetos colaboram entre si em um sistema.

Está-se falando, respectivamente, dos padrões de projeto

[A] criacionais e arquitetônicos.

[B] estruturais e de concorrência.

[C] organizacionais e comportamentais.

[D] criacionais e organizacionais.

[E] estruturais e comportamentais.

Comentários:

A questão cita duas descrições para marcarmos a letra que traz os padrões citados no enunciado.
  • Padrões que descrevem maneiras comuns de organizar classes e objetos em um sistema:
    • Padrões Estruturais:
      • Preocupam-se com a forma como classes e objetos são compostos para formar estruturas maiores; e
      • Explicam como montar objetos e classes em estruturas maiores, mantendo as estruturas flexíveis e eficientes;
  • Padrões que fornecem estratégias testadas para modelar a maneira como os objetos colaboram entre si em um sistema:
    • Padrões Comportamentais:
      • Concentram-se nos algoritmos e atribuições de responsabilidades entre os objetos; e
      • Cuidam de uma comunicação eficaz e da atribuição de responsabilidades entre objetos.

Em nenhum ponto, houve a citação de criação de objetos, que poderia remeter aos Padrões Criacionais:

  • Abstraem e/ou adiam o processo criação dos objetos; e
  • Fornecem mecanismos de criação de objetos que aumentam a flexibilidade e a reutilização do código existente.

Além disso, não existem as classificações padrões Arquitetônicos e Organizacionais.

Gabarito: letra E.

[COPESE/UFPI 2017 UFPI – Analista de Tecnologia da Informação] Assinale a opção que apresenta SOMENTE padrões de projeto criacionais.

[A] Prototype e Singleton

[B] Proxy e Singleton

[C] Command e Iterator

[D] Factory Method e Adapter

[E] Template Method e Abstract Factory

Comentários:

A questão pede a letra que traz, de forma correta, o subconjunto de dois Padrões Criacionais.

Temos os seguintes padrões na questão:
  • Padrões Criacionais:
    • Factory Method (letra D);
    • Abstract Factory (letra E);
    • Prototype (letra A);
    • Singleton (letras A e B);
  • Padrões Estruturais:
    • Proxy (letra B);
    • Adapter (letra D);
  • Padrões Comportamentais:
    • Template Method (Letra E)
    • Command (letra C);
    • Iterator (letra C).

A letra A é a única que traz o subconjunto de dois Padrões Criacionais.

Gabarito: letra A.

[CONSULPLAN 2017 TRE/RJ – Analista Judiciário – Análise de Sistemas] Padrões de projetos podem ser classificados em dois critérios: escopo e finalidade. Escopo especifica se o padrão se aplica primariamente a classes e objetos, e finalidade reflete o que o padrão faz. Quanto à finalidade, os padrões podem ser classificados em três categorias.

Assinale a INCORRETA.

[A] Criação.

[B] Estrutural.

[C] Reutilização.

[D] Comportamental.

Comentários:

Essa questão é bem tranquila. Não existe o Padrão de Reutilização.

Gabarito: letra C.

[CESPE 2017 TRT 7ª Região – Técnico Judiciário – Tecnologia da Informação] Considerando os padrões definidos pelo GoF (Gang of Four), assinale a opção correta. (Marque CERTO ou ERRADO)

[C] Os padrões GoF estão divididos nas categorias projetos de criação, projetos estruturais e projetos de transição.

Comentários:

Outra questão tranquila sobre classificação Não existe o Padrão de Transição.

Corrigindo a questão:
  • Os padrões GoF estão divididos nas categorias projetos de criação, projetos estruturais e projetos comportamentais.

Gabarito: ERRADO.

[D] Os padrões abstract factory e singleton fazem parte da categoria projetos estruturais.

Comentários:

Para fecharmos, a questão traz padrões de projetos da classificação Padrões Criacionais:
  • Uma fábrica (Factory Method) abstrata (Abstract Factory) constrói (Builder) um protótipo (Prototype) único (Singleton).
Corrigindo a questão:
  • Os padrões abstract factory e singleton fazem parte da categoria projetos criacionais.

Gabarito: ERRADO.

Então é isso! Abraços e até a próxima!

Rogério Araújo – Trabalha na Secretaria do Tesouro Nacional/Ministério da Fazenda, exercendo o cargo de Auditor Federal de Finanças e Controle. Formado em Bacharelado em Ciência da Computação pela UESPI (Universidade Estadual do Piauí) e especialista em Governança em TI pela Unieuro e em Desenvolvimento de Sistemas Baseados em Software Livre pela UNAMA (Universidade da Amazônia). Possui as certificações COBIT 4.1 Foundation Certified e SCJA (Sun Certified Associate for J2SE). É autor de artigos no site www.rogeraoaraujo.com.br e professor de cursos na área de Desenvolvimento de Sistemas para concursos. Foi aprovado em alguns concursos, tais como, em ordem decrescente de ano, STN 2013 (nomeado e onde estou hoje), TST 2012 (nomeado), TSE 2012 (aproveitado e nomeado no TRF 1ª Região), TRE/PE 2011 (classificado), TRT 19ª Região 2011 (classificado), MPU 2010 (classificado), STM 2010 (classificado), SERPRO 2008 (nomeado), TRT 18ª Região 2008 (classificado), MPU 2006 (classificado), BACEN 2005 (classificado), TRE/MA 2005 (classificado), TRT 16ª Região 2005 (classificado), TCE/PI 2005 (classificado) e MPU 2004 (nomeado).

WHATSAPP GCO: receba gratuitamente notícias de concursos! Clique AQUI!

CONCURSOS ABERTOS: veja aqui os editais publicados e garanta a sua vaga!

CONCURSOS 2019: clique aqui e confira as oportunidades para este ano!

Estudando para concursos públicos? Prepare-se com quem mais entende do assunto! Cursos completos 2 em 1, professores especialistas e um banco com mais de 920.000 questões de prova! Garanta já a sua vaga! Mude de vida em 2019!

Estude onde, quando, como quiser e em até 12x sem juros! Teste agora por 30 dias!

Matricule-se!

Quer conquistar a sua aprovação em concursos públicos?
Prepare-se com quem mais entende do assunto!
Comece a estudar no Gran Cursos
Rogério Araújo
Rogério Araújo
Auditor Federal do STN, especialista em Governança em TI e professor de Desenvolvimento de Sistemas
Clique para comentar

Deixe seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Quer conquistar a sua aprovação em concursos públicos?
Prepare-se com quem mais entende do assunto!
Comece a estudar no Gran Cursos
Para o Topo