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.)