GoF Flashcards
GoF
Gang of Four
Herança ou composição?
Favorecer composição sobre a herança
Interface ou implementação?
Programar para uma interface, não para uma implementação
O que são padrões de projeto?
Melhores práticas usadas por desenvolvedores experientes, obtidas por tentativa e erro durante um período substancial de tempo.
Criacionais: Frase
A fábrica abstrata construiu um protótipo único
Criacionais
Fabric
Abstract Fabric
Builder
Prototype
Singleton
Fábrica (Factory)
Criamos objetos sem expor a lógica de criação ao cliente e nos referimos ao objeto recém criado usando uma interface comum.
Define uma interface para criar um objeto, mas permite às classes decidir qual classe instanciar. (Fábrica de formas).
Construtor (Builder)
Cria um objeto complexo utilizando objetos simples e usando uma abordagem passo a passo. (Construtor de refeições, passo a passo).
Protótipo (Prototype)
Criação de objetos duplicados mantendo o desempenho em mente. Implementação de uma interface para criar um clone do objeto atual. Usado quando a criação do objeto é cara. (Banco de dados, cache para não ter que ir no bd)
Singleton
Uma única classe responsável por criar o objeto que assegura que somente um objeto será criado. (Construtor privado e public getInstance)
Estruturais: Frase
A ponte adaptada é composta de decorações na fachada para o peso mosca se aproximar
Estruturais
Ponte (Bridge)
Adaptador (Adapter)
Composição (Composite)
Decorador (Decorator)
Fachada (Facade)
Peso Mosca (Flyweight)
Proxy
Adaptador (Adapter)
Funciona como uma ponte entre duas interfaces incompatíveis. Combina capacidades de duas interfaces diferentes. Uma única classe fica responsável por unir as funcionalidades de interfaces incompatíveis e independentes. (chamada REST para chamada em SOAP por exemplo)
Decorador (Decorator)
Permite adicionar novas funcionalidades a objetos existentes sem alterar sua estrutura. Invólucro para uma classe existente. Cria uma classe decoradora que agrupa a classe original e adiciona métodos mantendo intacta a assinatura dos métodos existentes. (ClasseDecorator que adiciona setRedBorder)
Fachada (Facade)
Oculta as complexidades do sistema e fornece um interface simplificada ao cliente. Uma única classe fornece métodos simplificados exigidos pelo cliente e delega chamadas para classes de sistemas existentes. (Salvar não englobando os bancos de dados, arquivos, etc.)
Proxy
Uma classe representa a funcionalidade de outra classe. Cria-se um objeto que possui o objeto original para fazer interface de sua funcionalidade com o mundo exterior.
Controla o acesso ao objeto original.
Facade Vs Proxy, qual é a diferença?
Facade fornece uma interface simplificada para várias outras interfaces.
Proxy lida com uma interface por vez e seu objetivo é proteger e não simplificar.
Composição (Composite)
Tratar um grupo de objetos de maneira semelhante a um único objeto. Compõe objetos em uma estrutura de árvore para representar a hierarquia.
Cria uma classe que contém uma lista de seus próprios objetos. Essa classe fornece maneiras de modificar o grupo de objetos. (collections)
Comportamentais
Iterador (Iterator)
Observador (Observer)
Comando (Command)
Estratégia (Strategy)
Visitante (Visitor)
Chain of Responsibility
Interpreter
Mediator
Memento
State
Template Method
Iterador (Iterator)
É usado para obter acesso a um objeto em uma coleção de forma sequencial sem conhecer sua representação subjacente. (Forma de navegar .next(), .hasNext())
Observador (Observer)
Há um relacionamento um-para-muitos e quando um objeto é alterado, seus objetos dependentes precisam ser notificados automaticamente.
Quando houver mudança de estado, os objetos dependentes são notificados, gerando uma dependência fraca.
Subject - Observers
Comando (Command)
Padrão controlado por dados. Uma solicitação é agrupada sob um objeto comando e passada para o objeto invoker. O invoker procura o objeto apropriado e passa o comando para o objeto executá-lo.
O objeto comando não precisa saber como a operação é executada.
Serve para enfileirar ou registrar solicitações e implementar recursos de cancelamento de operações - Operações reversíveis. (broker - sell, buy)
Estratégia (Strategy)
O comportamento da classe pode ser alterado em tempo de execução. (New object enviado no construtor do contexto).
Cria-se objetos que representam várias estratégias e um objeto de contexto cujo seu comportamento varia conforme seu objeto estratégia. O objeto estratégia altera o algoritmo de execução de contexto.
Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. . O método modelo fica na classe pai.
Encapsula algoritmos por herança.
Strategy Vs Template, qual é a diferença?
Strategy encapsula algoritmos por herança e o Template por composição.
Visitante (Visitor)
Uma classe de visitantes altera o algoritmo de execução de uma classe de elemento. O algoritmo de execução do elemento pode variar conforme o visitante variar. O objeto elemento deve aceitar o objeto visitante para que o visitante lide com a operação do objeto elemento.
Builder Vs Factory
O Builder cria objetos complexos, por passo a passo, e o Factory não tem esse foco.