Mind map
Padrões de Projeto

Map content
Padrões de Projeto
Conceitos
- Descrição de uma solução para resolver um problema genérico de projeto em um contexto específico.
- Um padrão de projeto da nome, abstrai e identifica os aspectos-chave de uma estrutura de projeto comum para torná-la reutilizável.
Classificados por propósito
- Criação
- Abstraem o processo de criação de objetos a partir da instanciação de classes.
- Estruturais
- Tratam da forma como classes e objetos estão organizados para formar estruturas maiores
- Comportamentais
- Preocupam-se com algoritmos e responsabilidades dos objetos
- Criação
Padrões Criacionais
- Abstract Factory
- Proporciona uma interface para criar FAMILIAS DE OBJETOS RELACIONADOS ou dependentes sem especificar suas classes concretas
- Quando usar:
- O sistema deve ser configurado com UMA Familia de multiplas famílias de produtos
- Esses produtos relacionados são projetados para serem utilizados juntos
- Builder
- Separa a construção de um objeto COMPLEXO da sua representação, de forma que o mesmo processo possa criar DIFERENTES TIPOS DE REPRESENTAÇÕES
- Quando usar:
- O Algoritmo para criar um objeto deve ser independente de suas PARTES e de como elas são montadas
- Dica: Enquanto AbstractFactory enfatiza FAMILIAS de objetos, o Builder constroi partes de objetos PASSO A PASSO
- Factory Method
- Define uma interface para criar um objeto mas DEIXA AS SUBCLASSES DECIDIREM qual classe instanciar
- Quando usar:
- Uma classe não pode antecipar a classe de objetos que ela deve criar
- Uma classe quer que suas subclasses especifiquem os objetos que ela cria
- Prototype
- Especifica os tipos de objetos para criar uma INSTÂNCIA PROTOTÍPICA e cria novos objetos copiando este protótipo(CLONANDO o objeto original)
- Quando usar:
- O sistema possui componentes cujo estado inicial tem poucas variações
- É conveniente disponibilizar um conjunto pré estabelecido de protótipos que dão origem aos objetos que compõem o sistema.
- Singleton
- Garante que uma classe tem APENAS UMA INSTÂNCIA e provê um ponto de acesso global a ela
- Quando usar:
- Deve haver exatamente uma instância de uma classe .
- A iúnica nstância deve ser acessível aos clientes a partir de um ponto de acesso conhecido.
- Abstract Factory
Padrões Estruturais
- Adapter
- CONVERTE a interface de uma classe em outra interface que normalmente não poderiam trabalhar juntas.
- Quando usar:
- Queremos usar uma classe existente e sua interface não é adequada ao que você precisa.
- Bridge
- DESACOPLA uma interface de sua implementação, de forma que ela possa variar independentemente
- Quando usar:
- Queremos evitar um vínculo(ACOPLAMENTO) entre a abstração e a implementação
- Mudanças na implementação de uma abstratação NÃO DEVERIAM TER IMPACTO nos clientes, isto é, seu código não deveria ser recompilado
- Composite
- Compõe zero ou mais objetos SIMILARES de forma que eles possam ser MANIPULADOR COMO UM SÓ.
- Quando usar:
- Queremos representar hierarquias parte-todo de objetos
- Quando queremos que o cliente ignore a diferença entre objetos compostos e objetos individuais
- Decorator
- ANEXA RESPONSABILIDADES adicionais a um objeto dinamicamente. Decorator's fornecem uma alternativa flexível em relação a herança para estender funcionalidades. ADICIONA NOVOS COMPORTAMENTOS
- Quando usar:
- Queremos adicionar responsabiliades a objetos dinamicamente
- Quando a extensão por subclasses é impraticável
- Proxy
- Provê um SUBSTITUTO ou ponto através do qual um objeto possa controlar o acesso a outro.
- Quando usar:
- Toda vez que há necessidade de uma referência mais versátil ou sofisticada do que um simples ponteiro para um objeto
- Façade
- Provê uma INTERFACE UNIFICADA para um conjunto de interfaces de um subsistema. Define uma interface de mais alto nível que torna o subsistema mais fácil de manipular
- Quando usar:
- Quando queremos prover uma interface simples para um subistema complexo.
- Flyweight
- Usa COMPARTILHAMENTO para suportar GRANDES QUANTIDADES DE OBJETOS de granularidade fina, de maneira eficiente
- Quando usar:
- Uma aplicação utiliza um grande número de objetos e o custo para armazená-los é muito alto
- A maioria dos estados dos objetos pode ser tornada extrínseca
- Adapter
Padrões Comportamentais
- Strategy
- Define um FAMILIA DE ALGORITMOS, encapsula cada um, e faz deles intercambiáveis
- Quando usar:
- Várias classes relacionadas diferem apenas em seus comportamentos
- Você precisa de diferentes variantes de um algoritmo
- Uma classe define muitos comportamentos e eles aparecem como declarações condicionais nas suas operações
- Chain of Responsability
- EVITA O ACOPLAMENTO do remetente de uma solicitação ao seu receptor e ENCADEIA OS OBJETOS RECEPTORES passando a solicitação ao longo da cadeira até que um objeto a trate
- Quando usar:
- Você quer emitir uma solicitação para um dentre vários objetos, sem especificar explicitamente o receptor
- Iterator
- Fornece um meio de ACESSAR SEQUENCIALMENTE os elementos de um objeto agregado sem expor a sua representação subjacente.
- Quando usar:
- Você quer acessar o conteúdo de uma coleção sem expor a sua representação interna
- State
- Permite que um objeto mude o seu comportamento quando o seu estado interno mudar
- Quando usar:
- O comportamento de um objeto depende do seu estado, e ele deve mudar este comportamento em tempo de execução com este estado.
- Command
- ENCAPSULA UMA REQUISIÇÃO COMO UM OBJETO, deixando-o dessa forma, parametrizar os clientes com DIFERENTES REQUISIÇÕES
- Quando usar:
- Parametrizar objetos para realizar alguma ação
- Suportar undo
- Suportar transações
- Observer
- Define uma dependência entre objetos de forma que QUANDO UM OBJETO MUDA DE ESTADO, TODOS OS SEUS DEPENDENTES SÃO NOTIFICADOS e atualizados automaticamente.
- Quando usar:
- Quando uma mudança em um objeto requer mudanças em outros objetos e você não sabe quantos objetos serão mudados
- Visitor
- Representa uma OPERAÇÃO A SER EXECUTADA SOBRE OS ELEMENTOS DA ESTRUTURA DE UM OBJETO
- Quando usar:
- Muitas operações distintas e não relacionadas precisarem ser executadas sobre uma estrutura de objetos
- Permite definir uma nova operação sem mudar as classes dos elementos os quais opera
- Memento
- Sem violar o encapsulamento, captura e externaliza o estado interno de um objeto, de forma que ele possa ser recuperado depois.
- Quando usar:
- Uma "fotografia"(parte) do objeto precisa ser salva, de forma que ela possa ser recuperada depois.
- Mediator
- Define um objeto que ENCAPSULA A FORMA COMO UM CONJUNTO DE OBJETOS INTERAGE
- Promove o acoplamento fraco ao evitar que os objetos se refiram explicitamente uns aos outros
- Quando usar:
- Um conjunto de objetos se comunica de maneira bem-definida, porém complexas.
- O reuso de um objeto é difícil, porque ele referencia e se comunica com muitos outros objetos
- Template Method
- Define o ESQUELETO DE UM ALGORITMO em uma operação, deferindo alguns passos para as subclasses
- Permite que sublasses redefinam certos passos de algum algoritmo sem mudar a estrutura do algoritmo
- Quando usar:
- Implementar a parte invariante de um algoritmo uma vez e deixar para as subclasses a implementação do comportamento que pode variar
- Interpreter
- Dada uma linguagem, define uma REPRESENTAÇÃO PARA SUA GRAMÁTICA juntamente com um interceptador para as sentenças dessa linguagem
- Quando usar:
- Houver uma linguagem para interpretar e você puder representar as sentenças da linguagem como árvores sintáticas abstratas
- Strategy
Images and files in the map
Information
- Description
- Mind Map on Padrões de Projeto, created by Flavio Pereira on 05/07/2018.
- Created by
- Flavio Pereira
- Views
- 4
- Rating






















