Buscar

Anotações Padrões projetos em Java

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Padrões Gof de criação:
● Gang of Four - Gof
● Padrões de projeto divididos em três categorias
○ Criação
○ Estruturais
○ Comportamentais
● Padrões Gof de criação ajudam a construir sistemas independentes da forma com que
os objetos são criados e representados.
● Os módulos não devem depender de empresa e sim de abstrações.
● Criação de vários objetos podem trazer problemas futuros por conta de dependências
● Esse padrão possibilita a conexão de duas hierarquias paralelas representadas pelos
participantes genéricos Creator e Product.
PADRÃO DE PROJETO FACTORY METHOD:
● Soluções utilizadas com sucesso em problemas recorrentes
● Frequentemente utilizado na implementação de frameworks
● Método que cria objetos
● Adiar a substanciação para Subclasses
● Catálogo de soluções para problemas que se repetem
● Reutilizar o conhecimento
● Flexibilidade ao poder criar novas factories sem precisar mexer na anterior
● O que o padrão factory method tenta resolver?
○ Criar objetos sem especificar a classe do objeto que será criado,
○ Permite que a classe delegue a responsabilidade de criar objetos na subclasse
○ Ex:
○ Factory Method é um padrão frequentemente utilizado na implementação de
frameworks.
● Em relação à estrutura de solução proposta pelo padrão de projeto Factory Method,
assinale a alternativa correta:
○ É composta por uma hierarquia de classes que especializam um participante
abstrato Creator e por outra hierarquia de classes que especializam um participante
abstrato Product.
● Strategy:
○ como objetivo a separação de diferentes algoritmos dos objetos de domínio sobre os
quais eles atuam
● Template Method:
○ Utilizado em conjunto com o Factory Method
○ Implementação genérica definida em uma superclasse que contém passos que
podem ser especializados nas subclasses
● Solução do padrão Factory Method
○ O padrão Factory Method permite que diferentes implementações de um mesmo
serviço possam ser utilizadas por um cliente sem que seja necessário replicar
códigos similares ou utilizar estruturas condicionais complexas, conforme ilustrado
no exemplo anterior.
PADRÃO DE PROJETO ABSTRACT FACTORY:
● É um padrão que fornece uma interface para a criação de famílias de objetos
relacionados ou dependentes, sem criar dependências entre o cliente e as classes
concretas instanciadas.
● Creator e Concrete
● O problema tratado pelo padrão Abstract Factory consiste em isolar o cliente de uma família
de produtos relacionados de suas implementações específicas
■ Como podemos remover todas as instanciações dos decodificadores da
classe?
● ServicoIntegracao, criando uma solução genérica que permita
que esse serviço trabalhe com novos formatos de
decodificação sem que seu código precise ser alterado?
● AWT - >
○ Abstract Window Toolkit é o toolkit gráfico original da linguagem de
programação Java.
● MOTIF ->
○ Interface gráfica padrão para usuários do sistema operacional Unix.
● Promove o encapsulamento do processo de criação de objetos, isolando os clientes das
implementações concretas.
● Permite que os clientes sejam implementados pelo uso apenas de abstrações.
● Singleton -> Cada fábrica concreta
● 1. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO PADRÃO DE
PROJETO ABSTRACT FACTORY:
○ E) Permitir a criação de famílias de produtos relacionados ou dependentes, de
modo que não sejam criadas dependências entre os módulos clientes e as
classes concretas das famílias específicas de produtos.
● 2. EM RELAÇÃO À ESTRUTURA DE SOLUÇÃO PROPOSTA PELO PADRÃO DE
PROJETO ABSTRACT FACTORY, ASSINALE A ALTERNATIVA CORRETA
○ Devemos definir uma classe fábrica concreta para cada família de produtos.
PADRÃO DE PROJETO BUILDER:
● É um padrão que visa separar a construção de um objeto complexo de sua
representação, de forma que o mesmo processo de construção possa construir
diferentes representações desse objeto.
● Solução proposta:
○ Separar a criação de objetos complexos de quem demanda esses objetos
● O objeto Builder deve dar acesso apenas ao produto pronto
● Os clientes ficam isolados da forma como esses objetos são internamente construídos.
● Builder x Abstract
○ o Builder oferece um mecanismo de construção de um objeto complexo em
etapas
○ Enquanto o foco do Abstract Factory é definir famílias de produtos
● Composite:
○ representar objetos compostos por outros em uma hierarquia de especializações
de um mesmo elemento comum
● 1. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO PADRÃO DE
PROJETO BUILDER
○ A) Permitir que um único processo de construção seja capaz de construir
diferentes representações de objetos complexos, separando, em classes
distintas, o processo de construção de suas diferentes representações.
● 2. EM RELAÇÃO À ESTRUTURA DE SOLUÇÃO PROPOSTA PELO PADRÃO DE
PROJETO BUILDER, ASSINALE A ALTERNATIVA
○ E) Somente o participante Concrete Builder conhece a representação interna do
produto que ele é responsável por construir.
PADRÃO DE PROJETO PROTOTYPE:
○ Permite a instanciação de objetos a partir da geração de uma cópia de um objeto
protótipo
○ o módulo cliente não precisa conhecer a classe específica que está sendo
instanciada.
○ A ideia central do padrão é fazer com que uma classe cliente que precise criar
instâncias de uma subclasse específica ou de diferentes subclasses registre
uma instância protótipo dessa(s) subclasse(s) e chame a operação clone do
protótipo registrado sempre que precisar de uma nova instância.
○ É aplicável em 3 situações específicas:
■ 1. QUANDO EXISTIREM MUITAS FÁBRICAS ESPECÍFICAS PARA A
CRIAÇÃO DE DIFERENTES FAMÍLIAS DE PRODUTOS
● Permite uma solução sem que haja necessidade de implementar
uma subclasse para cada família
■ 2. QUANDO AS INSTÂNCIAS DE UMA CLASSE FOREM RESULTADO
DE POUCAS COMBINAÇÕES DE ESTADO
● É mais simples criar as instâncias típicas a priori e gerar cópias
delas, ao invés de instanciá-las manualmente.
■ 3. QUANDO O ESTADO DE UMA CLASSE ENVOLVER MUITOS
ATRIBUTOS E RELACIONAMENTOS COM UM PROCESSO DE
CRIAÇÃO DE NOVAS INSTÂNCIAS MUITO CUSTOSO OU COMPLEXO
● Neste caso, necessitamos criar objetos com estados idênticos ou
com poucas diferenças.
○ Pode ser modificado em tempo de execução, o contrário da Abstract
○ O padrão Prototype demanda que cada subclasse do produto a ser instanciado
implemente a operação clone
PADRÃO DE PROJETO SINGLETON:
● Garantir que exista uma (e apenas uma) instância de uma classe, provendo um ponto
de acesso global a essa instância.
● Polimorfismo
● O atributo únicaInstância é uma referência a essa única instância a ser compartilhada
pelos demais módulos.
● O padrão Singleton permite o acesso controlado a uma única instância de uma classe,
sendo uma solução superior à utilização de variáveis globais.
● Ele pode dificultar a implementação de testes unitários
● Portanto, esse é um padrão que deve ser utilizado apenas em casos muito específicos para
não criar acoplamentos desnecessários e tornar a estrutura do Software menos flexível
● 1. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO PADRÃO DE
PROJETO PROTOTYPE:
○ A) Permitir a instanciação de um objeto a partir de uma operação de clonagem
fornecida por um objeto já existente.
● 2. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO PADRÃO DE
PROJETO SINGLETON:
○ Garantir que uma classe tenha apenas uma instância em um processo de
execução,impedindo que outros módulos possam instanciar diretamente essa
classe.
Tema 03 - Padrões GOF estrutural
● Visão geral:
●
○ O padrão Adapter
■ Permite que módulos de um sistema possam interagir
com diferentes implementações de um mesmo serviço
■ Por meio de uma interface genérica.
○ O padrão Bridge
■ separa a abstração de um objeto da sua
implementação
■ Ambos possam variar de forma independente.
○ O padrão Decorator
■ Maneira de adicionar, dinamicamente, responsabilidades
a objetos por meio de estruturas de composição, em
vez de soluções baseadas em herança.
○ O padrão Composite descreve
■ como podemos estruturar uma hierarquia de objetosconstruída a partir de dois tipos de elementos: primitivos
e compostos.
○ O padrão Facade propõe
■ Criação de uma interface de alto nível para um
subsistema,
■ de modo a isolar os módulos clientes do conhecimento
da estrutura interna desse subsistema.
○ O padrão Flyweight apresenta
■ Uma solução para o problema de compartilhamento de
um número elevado de pequenos objetos,
■ Com o objetivo de utilizar os recursos de memória de
forma mais racional.
○ Por fim, o padrão Proxy consiste
■ Na criação de um objeto substituto do real destino de
uma requisição,
■ sendo útil para abstrair a complexidade na
comunicação entre objetos distribuídos
■ ou para lidar com a criação sob demanda de um objeto
com grande consumo de recursos, como imagens, por
exemplo.
● PADRÃO DE PROJETO ADAPTER:
○ O propósito é converter a interface de uma classe existente em outra
interface esperada pelos módulos clientes.
○ Especialmente útil quando estamos desenvolvendo um sistema que
precisa interagir com um serviço implementado por terceiros
■ Gostaríamos que nosso software de vendas pudesse
trabalhar com novos fornecedores que apareçam no
mercado, sem que seja necessário alterar módulos já
existentes, mas apenas adicionando novos módulos.
○ Precisamos de uma solução que nos permita conectar o módulo
cliente com qualquer fornecedor de serviço de pagamento.
○ Para cada Adaptee específico, deve ser criado um adaptador
○ Target (operation) e SpecificOperation
○ A interface BrokerPagamento representa a generalização dos
serviços oferecidos pelos diferentes fornecedores
○ Única interface, isolando, portanto, os módulos clientes das
diferentes interfaces proprietárias
1. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO PADRÃO DE PROJETO
ADAPTER:
B) Permitir a utilização de diferentes implementações de um mesmo serviço a partir de uma
interface comum, sendo que essas implementações correspondem normalmente a
componentes fornecidos por terceiros.
2. EM RELAÇÃO À ESTRUTURA DE SOLUÇÃO PROPOSTA PELO PADRÃO DE PROJETO
ADAPTER, ASSINALE A ALTERNATIVA
C) O participante Adapter possui a responsabilidade de converter as operações definidas pelo
participante Target nas operações definidas no participante Adaptee.
● PADRÃO DE PROJETO BRIDGE:
○ Objetivo principal:
■ Desacoplar uma abstração da sua implementação, permitindo que
ambas possam variar de forma independente.
■ Evita um problema de explosão combinatória de classes, resultante de
soluções baseadas em herança
■ O problema que o padrão Bridge soluciona:
● é a separação da abstração (TextComponent e suas
especializações do domínio, TextArea e TextField) dos aspectos
de sua implementação (plataformas Windows e Motif), permitindo
que ambas possam evoluir separadamente, isto é, podemos
adicionar novos tipos de componentes e novas plataformas sem
gerar um problema combinatório de difícil gestão.
■ Separação de hierarquia de abstrações da hierarquia de implementações
■ JAVA AWT -> Windows
■ Diferença do padrão adapter para Bridge:
● padrão Adapter é aplicado quando desejamos incorporar à
solução elementos de terceiros
● O padrão Bridge, por outro lado, é uma solução definida a
priori, ou seja, a interface comum de implementação é
determinada de forma a permitir que diferentes implementações
possam ser construídas a partir da sua definição.
■ Alguns nomes de objetos:
● TextField, TextArea, Component, ComponentPeer
■ 1. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO
PADRÃO DE PROJETO BRIDGE:
● E) Permitir que uma abstração e a sua representação interna ou
tecnológica possam variar de forma independente, fornecendo
uma ponte entre a abstração e a sua representação.
●
● PADRÃO DE PROJETO DECORATOR:
○ Padrão que permite adicionar responsabilidades a um objeto de forma
dinâmica e mais flexível do que utilizando subclasses
○ Melhor que utilizar subclasses
○ Component, ConcreteComponent, Decorator,Writer,
○ O padrão Decorator oferece uma forma mais flexível de adicionar
funcionalidades a objetos do que as soluções baseadas em herança, por ser
baseado em composição de objetos.
○ Estrutura similar a uma cebola
○ 1. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO PADRÃO
DE PROJETO DECORATOR:
■ B) Adicionar funcionalidades a uma classe sem utilizar subclasses,
mas por meio de uma estrutura de composição dinâmica e flexível.
● PADRÃO DE PROJETO COMPOSITE:
○ Permite representar hierarquias de composição de objetos em uma estrutura
de árvore viabilizando que a manipulação dos objetos individuais e dos
agregados possa ser feita com o mesmo conjunto de operações.
○ é especialmente interessante para problemas de representação de
hierarquias de elementos nas quais observamos recursividade.
○ A ideia central do padrão é representar a hierarquia de modo que todos os
elementos herdem de uma superclasse genérica representada pelo
participante Component.
○ Leaf, Elemento, Mensagem, Pasta
○ Representa uma estrutura hierárquica de objetos, permitindo que os módulos
clientes possam manipular seus elementos de maneira uniforme por meio da
mesma interface.
○ 1. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO
PADRÃODE PROJETO COMPOSITE:
■ A) Compor hierarquias de objetos de forma que objetos individuais e
agregados possam ser manipulados de forma genérica pelo mesmo
conjunto de operações.
● PADRÃO DE PROJETO FACADE:
○ Tem o propósito de oferecer uma interface de alto nível para um componente
ou subsistema
○ é permitir que um módulo cliente utilize um subsistema ou uma camada
complexa de um sistema sem precisar conhecer e manipular diversos
elementos,
○ Reduzir o acoplamento entre o subsistema e os módulos clientes.
○ Consiste, basicamente, em definir uma classe correspondente ao participante
Facade, que oferece uma interface de alto nível ao participante Client
○ O padrão Facade reduz a complexidade de implementação dos módulos
clientes de um subsistema, promovendo menor acoplamento entre o
subsistema e os seus clientes.
○ Isso permite que os componentes internos do subsistema possam ser
modificados sem afetar os módulos clientes.
○ 2. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO
PADRÃODE PROJETO FACADE:
■ B) Reduzir o acoplamento de um módulo cliente com os elementos que
compõem o subsistema, fornecendo para o módulo cliente uma
interface de alto nível aos serviços desse subsistema.
● PADRÃO DE PROJETO FLYWEIGHT:
○ O propósito do padrão Flyweight é permitir a utilização de diversos pequenos
objetos de forma eficiente
○ Ex: Substâncias químicas - aplicação envolvendo substâncias químicas
○ O problema que esse padrão tenta resolver:
■ consiste em como podemos compartilhar objetos imutáveis, ou as
partes imutáveis de objetos, de modo a utilizar os recursos de
memória de forma mais eficiente.
○ O padrão Flyweight permite a utilização mais racional da memória em casos
nos quais exista a criação de um número elevado de pequenos objetos
replicados.
○ Imutável
○ 1. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO PADRÃO
DE PROJETO FLYWEIGHT:
■ C) Permitir a utilização mais eficiente de memória, evitando a criação
de um número muito grande de objetos imutáveis simples, por meio
de uma solução baseada em compartilhamento.
● PADRÃO DE PROJETO PROXY:
○ O propósito do padrão Proxy é fornecer aos clientes um objeto proxy, com a
mesma interface do objeto destino real
○ EJB, J2EE
○ O padrão Proxy introduz um nível de indireção para o acesso a um objeto.
○ Além disso, é possível construir objetos grandes ou numerosos sob demanda
sem mudar a interface oferecida ao módulo cliente.
○ o padrão proxy preserva a mesma interface oferecida pelo objeto alvo.
○ 2. ASSINALE A ALTERNATIVA QUE EXPRESSA A INTENÇÃO DO PADRÃO
DE PROJETO PROXY:
■ B) Permitir a utilização de objetos remotos, de forma transparente, para o
módulo chamador,isto é, o módulo chamador pode chamar as operações
do objeto remoto como se ambos estivessem rodando no mesmo
processo.
Padrões de projetos comportamentais:
● Padrão Chain of Responsibility:
○Chain of Responsibility é um padrão que permite o envio de uma requisição para
o primeiro elemento de uma cadeia de objetos
○ Fazendo com que o objeto requisitante não precise ficar acoplado a todos os
objetos da cadeia
○ Inspirada na loja de Departamentos
○ O processamento é dividido em pequenos módulos que podem ser
combinados de diferentes maneiras.
○ Cadeia de objetos
○ Requisição repassada para sucessor na cadeia.
○ O padrão Chain of Responsibility reduz a complexidade de uma classe que
tenha que lidar com várias possibilidades de tratamento de uma requisição
○ Utilizado junto com o Composite
○ Questão 1 - Assinale a alternativa que expressa a intenção do padrão de
projeto Chain of Responsibility:
■ A) Reduzir o acoplamento entre o objeto que envia uma requisição e
todos os possíveis objetos que podem realizar algum processamento
relacionado a essa requisição.
○
● Padrão Command:
○ Command é um padrão que encapsula uma requisição em um objeto.
○ Transformar cada ação em um objeto
○ Cada ação é implementada individualmente em uma classe
○ O padrão Command promove o desacoplamento entre o objeto que faz a
requisição e o objeto que realiza a operação requisitada
○ é possível reutilizar um código comum entre os comandos
○ Adição de comandos sem precisar alterar classes já existentes.
○ Maior facilidade para a implementação de testes unitários automatizados
○ Undo - redo
● Padrão Iterator:
○ O objetivo do padrão Iterator é permitir o acesso sequencial aos objetos de
uma coleção, sem expor a sua representação interna
○ ArrayList, Aggregate, ArrayList, LinkedList, HashSet e TreeSet
○ A solução proposta pelo padrão Iterator consiste em colocar a
responsabilidade pelo percurso e pelo acesso aos elementos de uma
coleção em um objeto específico, denominado Iterator.
○ O principal benefício do padrão Iterator é permitir que os módulos clientes
possam percorrer sequencialmente os elementos de uma coleção de forma
independente da sua representação interna
○ Questão 2 - Assinale a alternativa que expressa a intenção do padrão de
projeto Iterator:
■ C) Permitir que um módulo possa fazer o percurso por uma coleção de
objetos sem precisar conhecer a representação interna dessa coleção.
● Padrão Mediator:
○ Encapsula a forma de interação entre um conjunto de objetos, com objetivo de
evitar que eles tenham que referenciar uns aos outros explicitamente.
○ A solução consiste em centralizar as comunicações entre os objetos em um
elemento denominado mediador.
○ O participante Mediator define uma interface padrão que cada objeto utilizará
para se comunicar com os demais envolvidos em uma interação.
○ Solução de menor acoplamento para interações complexas entre objetos
○ Substitui a estrutura de muitos para muitos para um para muitos
○ Interface do usuário: Botões, campos de texto, lista de seleção
○ Comum ser aplicado com o Observer
○
● Padrão Memento:
○ Memento é um padrão que permite capturar o estado interno de um objeto,
sem quebrar o seu encapsulamento, de forma que esse estado possa ser
restaurado posteriormente.
○ Desfazer o efeito produzido por uma ou mais operações em determinado objeto
ou em um conjunto de objetos
○ E se oferecêssemos um recurso que possibilitasse o usuário interromper sua
compra e voltar mais tarde, sem perder o conteúdo já adicionado ao pedido?
○ Operação criarMemento
■ Salva o estado do pedido em uma instância de PedidoMemento.
○ Operação restaurarMemento
■ Restaura o estado do pedido a partir do objeto PedidoMemento recebido
como parâmetro.
○ O padrão Memento facilita a implementação de problemas nos quais precisamos
desfazer certas modificações de estado em objetos
○ Checkpoint/restart
○ Retomar de onde parou
○ Esse padrão é frequentemente utilizado com o padrão Command, quando
este implementa um mecanismo para desfazer um comando.
○ Questão 02 - Assinale a alternativa que expressa a intenção do padrão de
projeto Memento:
■ E) Fornecer um mecanismo para salvar e restaurar o estado de um
objeto, sem quebrar o seu encapsulamento.
● Padrão Strategy:
○ O padrão Strategy define uma família de algoritmos, encapsulando-os em
objetos e permitindo que eles possam ser utilizados de forma intercambiável,
ou seja, o algoritmo específico pode ser trocado sem que o módulo usuário
desse algoritmo precise ser alterado.
○ O padrão Strategy é aplicável em situações nas quais existam diferentes
algoritmos para gerar determinado resultado.
○ Cálculos de juros para título público
○ A ideia central consiste em separar cada algoritmo em uma classe, fazendo
com que todas as classes específicas implementam uma interface comum,
representada pelo participante Strategy
○ Pode ser implementado em combinação com o padrão Flyweight
○ Questão 01 - Assinale a alternativa que expressa a intenção do padrão de
projeto Strategy:
■ C) Encapsular algoritmos em objetos, permitindo que eles possam ser
utilizados de forma intercambiável pelos módulos clientes.
● Padrão Observer:
○ Relação de dependência dos objetos
○ Garante que quando ocorrer modificações no estado de determinados objetos,
todos objetos dependentes são notificados e atualizados automaticamente.
○ Observer consiste em manter a consistência entre objetos relacionados de
modo que, se o estado de um objeto mudar, todos os objetos afetados por
essa mudança sejam notificados e atualizados.
○ Em Java, esse padrão pode ser implementado utilizando as classes disponíveis
nas bibliotecas da linguagem
○ java.util.Observable
○ O padrão Observer permite que os objetos detentores de informação relevante
possam notificar que ocorreram modificações nessa informação aos
possíveis interessados.
○ Uma consequência negativa desse padrão é que a solução proposta pode dar
origem a muitas chamadas da operação update.
○ O padrão Observer pode ser utilizado em conjunto com o padrão Mediator
● Padrão Visitor:
○ O padrão Visitor permite a definição de novas operações em uma hierarquia
de objetos sem que haja a necessidade de modificar as classes dessa
hierarquia.
○ Nos permite acrescentar novas funcionalidades sem precisar modificar as
classes que representam a estrutura fundamental dos objetos.
○ O padrão Visitor permite a adição de novas funcionalidades de forma ortogonal a
uma estrutura de objetos
● Padrão State:
○ Permite que um objeto modifique o seu comportamento quando o seu
estado mudar, como se o objeto tivesse mudado de classe.
○ O padrão State é muito útil para problemas envolvendo a implementação de
entidades com uma dinâmica de estados relevante.
○ O participante Context corresponde a uma classe que possui uma dinâmica
dependente de estados.
○ O padrão State separa os comportamentos aplicáveis a cada estado de um
objeto em classes distintas.
○
Questões:
1- Assinale a alternativa que expressa a intenção do padrão de projeto State:
● D) Permitir a implementação de uma máquina de estados, por meio da definição de
uma classe para cada estado. Cada classe implementa o comportamento do objeto
naquele estado específico.
2- Assinale a alternativa que expressa a intenção do padrão de projeto Visitor:
● C) Permitir a adição de novas funcionalidades, por meio da utilização de classes
ortogonais a uma estrutura tipicamente hierárquica de objetos.
● Padrão Interpreter:
○ definir uma representação para a gramática de uma linguagem e um módulo
capaz de interpretar sentenças nessa linguagem.
○ Problema resolvido: definir uma forma de representar e interpretar uma
linguagem definida por uma gramática.
○ Os elementos da gramática da linguagem são definidos por objetos que formam
uma árvore sintática abstrata
○ Esse padrão facilita a modifi cação e a ampliação de uma gramática
● Padrão Template Method:
○ Template Method é definir o esqueleto de um algoritmo em uma superclasse,
em que os passos comuns podem ser implementados na própria superclasse
e os passos específicos são implementados nas subclasses.
○ Definir um método em uma classe abstrata que implementa a estruturado
algoritmo comum a todas as suas implementações específicas
○ O padrão Template Method é muito utilizado na implementação de bibliotecas
genéricas de classes e de framework
○ Não nos chame, nós o chamaremos
○ O padrão Factory Method costuma ser utilizado no contexto de um
TemplateMethod
○ Permite a variação de partes de um algoritmo, por meio de uma estrutura de
herança. No caso do Strategy algoritmos diferentes sem estrutura comum.
Questões:
1- Assinale a alternativa que expressa a intenção do padrão de projeto Interpreter:
● D) Definir uma representação para a gramática de uma linguagem é uma forma de
tratar sentenças expressas com essa linguagem.
2- Assinale a alternativa que expressa a intenção do padrão de projeto Template Method:
● B) Implementar uma família de algoritmos que possuem uma estrutura comum de
passos, de modo que essa estrutura seja definida apenas na superclasse, com os
passos específicos sendo implementados em métodos das subclasses.
Padrões GRASP
● Acrônimo
● General responsibility assignment software patterns - GRAP
● GRASP podem ser vistos como os princípios gerais de um projeto de software
orientado a objetos que são aplicáveis na solução de diversos problemas específicos.
● A distribuição de responsabilidades pelos módulos do sistema é uma das tarefas
mais importantes no desenvolvimento orientado a objetos.
Padrão Especialista da Informação:
● Recomenda como princípio geral a atribuição correta de responsabilidade
● Atribua a responsabilidade ao especialista, isto é, ao módulo que possua o
conhecimento necessário para realizá-la.
● Quando o padrão Especialista na Informação não é seguido, é comum encontrar uma
solução defi ciente conhecida como God Class
Questão 1 - Assinale a alternativa que expressa a intenção do padrão Especialista na
Informação.
● A) Padrão que recomenda alocar as operações pelas classes do sistema de acordo
com o conhecimento que cada classe possui, sendo ele dado pelos seus atributos e
relacionamentos
Padrão Criador:
● O padrão Criador recomenda atribuir a uma classe X a responsabilidade de criar
uma instância da classe Y se uma ou mais das seguintes condições
forem)verdadeira(s):
○ X é um agregado formado por instâncias de Y.
○ X contém instâncias de Y.
○ X registrar instâncias de Y.
○ X possui os dados de inicialização necessários para a criação de uma instância
de Y.
● O padrão Criador é especialmente indicado para a criação de instâncias que formam
parte de um agregado.
Questão 2 - Marque a alternativa que expressa a intenção do padrão Criador.
● C) O padrão Criador oferece uma heurística para resolver problemas simples de
instanciação de objetos, recomendando que um agregado seja responsável pela
criação dos objetos que compõem
2 - Padrões Coesão Alta e Controlador
Padrão Coesão Alta:
● Coesão é um conceito que nos permite avaliar se as responsabilidades de um módulo
estão fortemente relacionadas e possuem o mesmo propósito.
● O objetivo é criar módulos com coesão alta, ou seja, módulos que tenham um
propósito bem definido.
● A solução proposta por esse padrão consiste em definir módulos de coesão alta.
● Tipos de Coesão:
○ Coesão Coincidente:
■ Quando os elementos estão agrupados em um módulo de forma
arbitrária ou por conveniência.
○ Coesão Lógica:
■ Os elementos são agrupados por estarem logicamente relacionados
ou por realizarem funções diferentes, ainda que tendo a mesma
natureza
■ Arquivo de texto local - Arquivo Obtido via FTP
■ Banco de dados relacionais.
○ Coesão Temporal:
■ é aquele em que os seus elementos são agrupados por serem
executados em determinado instante do tempo
■ São colocadas no módulo Startup todas as operações executadas na
inicialização do sistema, logs.
■ INICIALIZAÇÃO
○ Coesão Procedural:
■ Um módulo com coesão procedural é aquele cujos elementos são
agrupados por eles serem executados em determinada sequência
utilizando diferentes conjuntos de dados.
○ Coesão de Comunicação:
■ Os elementos são agrupados por eles realizarem funções diferentes
utilizando o mesmo conjunto de dados.
○ Coesão Sequencial
■ é aquele cujos elementos são agrupados por eles conterem todos os
passos de execução de um procedimento sobre um mesmo conjunto
original de dados
○ Coesão Funcional:
■ Reúne elementos que, juntos,cumprem um único propósito bem
definido
■ pacote java.io
■ FileOutputStream, FileInputStream, FileReader, FileWriter
Questão 1 - Assinale a alternativa correta sobre o padrão GRASP Coesão.
b) Buscamos produzir módulos com coesão alta, isto é, módulos que tenham um propósito bem
definido.
Padrão Controlador:
● A quem devemos atribuir a responsabilidade de processar eventos que
correspondam a requisições lógicas de execução de operações do sistema?
● O padrão Controlador recomenda que a responsabilidade de receber um evento de
sistema e de coordenar a produção da sua resposta precisa ser alocada a uma
classe que representa uma das seguintes opções:
○ Uma classe correspondente ao sistema ou a um subsistema específico -
Controlador Fachada
○ Uma classe corresponde ao caso de uso em que o evento ocorre.
○ O controlador não faz parte da interface com o usuário.
○ Ao receber uma requisição, um módulo Controlador normalmente coordena
e controla os elementos responsáveis pela produção da resposta.
○ Imagine uma orquestra com um maestro e vários músicos.
○ Maestro (controlador)
Questão 02 - Aponte a alternativa correta sobre o padrão Controlador.
E) O controlador é um elemento de lógica de negócio responsável por coordenar a produção
da resposta aos eventos lógicos gerada por componentes de interface do sistema com
elementos externos.
Padrão Acoplamento Baixo:
● Um acoplamento corresponde ao grau de dependência de um módulo em relação a
outros do sistema.
●
● A solução proposta por esse padrão consiste em distribuir as responsabilidades a
fim de gerar um acoplamento baixo entre os módulos
● Tipos de Acoplamento:
○ Acoplamento de conteúdo:
■ Ele ocorre quando um módulo utiliza aspectos de implementação de
outro.
○ Acoplamento global:
■ Ocorre quando eles se comunicam por intermédio de recursos, como,
por exemplo, variáveis globais.
○ Acoplamento externo:
■ compartilham alguma parte do ambiente externo ao software, como,
por exemplo, banco de dados, arquivos ou formato de dados.
○ Acoplamento de controle:
■ Ocorre quando um módulo controla a lógica interna de outro por meio
da passagem de alguma informação de controle.
○ Acoplamento de estrutura:
■ Ele acontece quando um módulo chamador passa uma estrutura de
dados para um módulo chamado.
○ Acoplamento de dados:
■ O acoplamento de dados ocorre quando um módulo se comunica com
outro, passando apenas os dados
■ Módulos independentes se comunicam por meio de dados.
● Os níveis de acoplamento, do mais alto para o mais baixo, são:
○ Conteúdo – Global – Externo – Controle – Estrutura – Dados
○ Buscamos produzir módulos com acoplamento baixo, minimizando o grau de
dependência entre eles.
Padrão Invenção Pura
● A solução proposta pelo padrão Invenção Pura diz respeito à criação de classes
artificiais, isto é, classes que não representam um conceito do domínio do problema,
para gerar soluções com coesão alta e acoplamento baixo
● Esse padrão permite a criação de soluções com módulos de coesão alta e acoplamento
baixo.
Aponte a alternativa correta em relação ao padrão Invenção Pura:
D) Domínio do problema com o objetivo de gerar soluções com maior coesão e menor
acoplamento daquilo que seria obtido pela aplicação do padrão Especialista na
Informação.
Padrão Indireção:
● A solução proposta pelo padrão Indireção consiste em substituir a conexão direta entre
dois ou mais objetos por uma estrutura de comunicação mediada por um objeto
intermediário.
● Trata-se de introduzir uma camada entre o cliente e o fornecedor a fim de
desacopla-los, promovendo soluções mais flexíveis, reusáveis e mais fáceis de
entender e evoluir.
Padrão Variações Protegidas:
● Identificar pontos sujeitosà variação e isolar essas variações com a criação de
interfaces estáveis no seu entorno
● Proteger os pontos de variação de um software

Continue navegando