Please enable JavaScript.
Coggle requires JavaScript to display documents.
05 - Padrões de Projeto (elementos (Problema, Solução, Nome,…
05 - Padrões de Projeto
Definição: são descrições de objetos que se comunicam e classes que são customizadas para resolver um problema genérico em um contexto específico
-
-
classificação
Estrutura
Bridge :fire:
desacopla uma interface de sua implementação, de forma que ambas possam variar independentemente. Fornece um nível de abstração maior que o Adapter.
(EX: Faz a ponte entre os diversos SO's e os diversos tipos de Janelas de diálogo, aviso, erro etc)
Adapter :fire:
converte a interface de uma classe em outra interface que normalmente não poderiam trabalhar juntas por serem incompatíveis
(EX: Adaptador de tomada)
Composite
compõe objetos em estruturas de árvore para representar hierarquias parte-todo, permitindo aos clientes tratarem objetos individuais e composições de objetos uniformemente
-
Façade :fire:
oferece uma interface unificada para um conjunto de interfaces em um subsistema, definindo uma interface de alto nível que facilita a utilização do subsistema
(EX: Uma façade para um sistema novo interagir com um legado)
Flyweight
usa compartilhamento para suportar eficientemente grandes quantidades de objetos de baixa granularidade
(Ex: Editor de texto guarda ponteiros do objeto letra 'A' com as posições ao invés de guardar vários objetos repetidos)
Proxy
provê um substituto ou ponto através do qual um objeto pode controlar o acesso a outro objeto
(EX: o usuário se conectará ao Proxy (i.e., a classe substituta ou suplente) e o Proxy que irá se conectar ao banco de dados)
-
A Ponte Adaptada É Composta de Decorações na Fachada para o Peso Mosca se Aproximar
A ponte (Bridge) adaptada (Adapter) é composta (Composite) de decorações (Decorator) na fachada (Façade) para o pesomosca (Flyweight) se aproximar (Proxy). :smiley:
Comportamento
Chain of Responsibility
evita o acoplamento do remetente de uma requisição ao seu receptor ao dar a mais de um objeto a chance de lidar com a requisição.
(EX: loja virtual que permite pagamento online por meio de diversos bancos)
Command
encapsula a requisição de um objeto, portanto permitindo que se parametrize os clientes com diferentes requisições
(EX. Liga/Desliga)
Iterator :fire:
fornece uma maneira de acessar elementos de um objeto agregado sequencialmente sem expor sua representação interna
(EX. Iterator de Lista, Arrays, Map e Set)
Mediator
define um objeto que encapsula a forma como um conjunto de objetos interagem, promovendo um fraco acoplamento ao evitar que objetos se refiram aos outros explicitamente
Memento
captura e externaliza o estado interno de um objeto, sem violar seu encapsulamento, de maneira que o objeto possa ser restaurado posteriormente.
(EX: Ctrl+Z do editor de texto)
Observer
define uma dependência um-para-muitos entre objetos para que, quando um objeto mudar de estado, os seus dependentes sejam notificados e atualizados automaticamente
(EX: Gráfico atualiza automaticamente quando os dados da lista são alterados)
State
permite a um objeto alterar o seu comportamento quando o seu estado interno for modificado. o estado futuro depende de seu estado atual e o estado futuro é decidido em tempo de execução
(EX: Super Mario, pega um cogumelo e cresce OU ganha pontos)
Strategy
define uma família de algoritmos, encapsula cada um e faz deles intercambiáveis
(EX: ordenaAluno(menino, bubbleSort) ou ordenaAluno(menina, mergeSort))
Visitor
representa uma operação a ser realizada sobre elementos de uma estrutura de objetos e permite definir uma nova operação sem mudar as classes dos elementos sobre os quais opera
(EX: Caixa de supermercado)
Interpreter
dada uma linguagem, define uma representação para sua gramática em conjunto com um interpretador que utiliza a representação para interpretar sentenças na linguagem.
(EX: JAVA)
Templates Method
define o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses
(EX: Subway. Cortar o pão é sempre igual mas recheio não)
se preocupam com os algoritmos e responsabilidades dos objetos, que ocorrem em tempo de execução
E não tem frase para o último? Não, se não é criacional ou estrutural, é comportamental :smiley:
Criação
Builder
separa a construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes tipos de representações.
Esse padrão é bastante parecido com o Abstract Factory. A diferença é que não se constrói uma família de objetos de uma única vez, mas partes do objeto passo-a-passo!
(EX: Tablet reune elementos da interface do PC e do Mobile)
Prototype
especifica os tipos de objetos para criar usando uma instância como protótipo e cria novos objetos copiando este protótipo
(Ex: Cadastrar membros da família clonando o mesmo objeto pq só vai mudar nome, idade. O resto é igual)
Abstract Factory :fire:
fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas
(EX: Interface para PC e outra para Mobile)
Singleton :fire:
garante que uma classe tenha apenas uma instância e provê um ponto de acesso global a ela
(EX: só haverá uma instância de conexão com o banco de dados)
Factory Method
define uma interface para criar um objeto, mas deixa as
subclasses decidirem qual classe instanciar
(Ex: Celta, Corsa etc implementam classe abstrata Carro)
-
A Fábrica Abstrata constrói um Protótipo Único.
Explicação: A fábrica (Factory Method) abstrata (Abstract Factory) constrói (Builder) um protótipo (Prototype) único (Singleton). :smiley:
-
-