GoConqr has a new look! Let us know what you think.

Mind map

Padrões de Projeto

Flavio Pereira Portuguese

Padrões de Projeto

Map content

Padrões de Projeto

  1. 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.
  2. 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
  3. 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.
  4. 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
  5. 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

Images and files in the map

  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto
  • Padrões de Projeto

Information

Description
Mind Map on Padrões de Projeto, created by Flavio Pereira on 05/07/2018.
Created by
Flavio Pereira
Views
4
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?